#!/bin/sh

#
#    Copyright 2014-2016 Nest Labs Inc. All Rights Reserved.
#
#    Licensed under the Apache License, Version 2.0 (the "License");
#    you may not use this file except in compliance with the License.
#    You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
#    Unless required by applicable law or agreed to in writing, software
#    distributed under the License is distributed on an "AS IS" BASIS,
#    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#    See the License for the specific language governing permissions and
#    limitations under the License.
#

#
#    Description:
#      This file implements a script which, when run from a project
#      build directory (either disparate or colocated with the
#      source), will attempt to clean the build directory, rebootstrap
#      the package, and then rerun the configuration script for the
#      package with the provided arguments.
#
#      This script is particularly useful when you are changing the
#      configuration script and testing those changes.
#

srcdir=`dirname ${0}`
builddir=.

# Bring the package build back to a pristine state.

if [ -f config.status ]; then
	make maintainer-clean
fi

# Change directories to the package source and rebootstrap the package.

pushd ${srcdir}

./bootstrap
bootstrap_status=$?

popd

# If the package was successfully bootstrapped, configure it.

if [ ${bootstrap_status} -eq 0 ]; then
    ${srcdir}/configure $*
else
   exit ${bootstrap_status}
fi
