SwiftGit2/script/bootstrap
2014-11-08 08:41:22 -05:00

124 lines
2.4 KiB
Bash
Executable File

#!/bin/bash
export SCRIPT_DIR=$(dirname "$0")
##
## Configuration Variables
##
config ()
{
# A whitespace-separated list of executables that must be present and locatable.
: ${REQUIRED_TOOLS="xctool cmake"}
export REQUIRED_TOOLS
}
##
## Bootstrap Process
##
main ()
{
config
if [ -n "$REQUIRED_TOOLS" ]
then
echo "*** Checking dependencies..."
check_deps
fi
local submodules=$(git submodule status)
local result=$?
if [ "$result" -ne "0" ]
then
exit $result
fi
if [ -n "$submodules" ]
then
echo "*** Updating submodules..."
update_submodules
fi
}
check_deps ()
{
for tool in $REQUIRED_TOOLS
do
which -s "$tool"
if [ "$?" -ne "0" ]
then
echo "*** Error: $tool not found. Please install it and bootstrap again."
exit 1
fi
done
# Ensure that we have libgit2's dependencies installed.
installed=`brew list`
libs="libssh2 libtool autoconf automake"
for lib in $libs
do
# Skip packages that are already installed.
echo "$installed" | grep -q "$lib" && code=$? || code=$?
if [ "$code" -eq "0" ]
then
continue
elif [ "$code" -ne "1" ]
then
exit $code
fi
echo "*** Installing $lib with Homebrew..."
brew install "$lib"
done
brew_prefix=`brew --prefix`
expected_prefix=/usr/local
if [ "$brew_prefix" != "$expected_prefix" ]
then
echo "*** Adding soft links into $expected_prefix..."
products=(lib/libssh2.a include/libssh2.h include/libssh2_sftp.h include/libssh2_publickey.h)
for product in "${products[@]}"
do
destination="$expected_prefix/$product"
if [ -e "$destination" ]
then
continue
fi
sudo mkdir -p "$(dirname "$destination")"
sudo ln -s "$brew_prefix/$product" "$destination"
done
fi
}
bootstrap_submodule ()
{
local bootstrap="script/bootstrap"
if [ -e "$bootstrap" ]
then
echo "*** Bootstrapping $name..."
"$bootstrap" >/dev/null
else
update_submodules
fi
}
update_submodules ()
{
git submodule sync --quiet && git submodule update --init && git submodule foreach --quiet bootstrap_submodule
}
export -f bootstrap_submodule
export -f update_submodules
main