mirror of
https://github.com/gosticks/SwiftGit2.git
synced 2025-10-16 11:55:34 +00:00
138 lines
2.9 KiB
Bash
Executable File
138 lines
2.9 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.
|
|
# These will each be installed through Homebrew if not found.
|
|
: ${REQUIRED_TOOLS="cmake libssh2 libtool autoconf automake pkg-config"}
|
|
: ${REQUIRED_GEMS="xcpretty"}
|
|
|
|
export REQUIRED_TOOLS
|
|
export REQUIRED_GEMS
|
|
}
|
|
|
|
##
|
|
## Bootstrap Process
|
|
##
|
|
|
|
main ()
|
|
{
|
|
config
|
|
|
|
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
|
|
|
|
if [ -n "$REQUIRED_TOOLS" ]
|
|
then
|
|
echo "*** Checking dependencies..."
|
|
check_deps
|
|
fi
|
|
}
|
|
|
|
check_deps ()
|
|
{
|
|
# Check if Homebrew is installed
|
|
which -s brew
|
|
local result=$?
|
|
|
|
if [ "$result" -ne "0" ]
|
|
then
|
|
echo
|
|
echo "Homebrew is not installed (http://brew.sh). You will need to manually ensure the following tools are installed:"
|
|
echo " $REQUIRED_TOOLS"
|
|
echo
|
|
echo "Additionally, the following libssh2 files must be symlinked under /usr/local:"
|
|
echo " lib/libssh2.a include/libssh2.h include/libssh2_sftp.h include/libssh2_publickey.h"
|
|
exit $result
|
|
fi
|
|
|
|
# Ensure that we have libgit2's dependencies installed.
|
|
installed=`brew list`
|
|
|
|
for tool in $REQUIRED_TOOLS
|
|
do
|
|
# Skip packages that are already installed.
|
|
echo "$installed" | grep -q "$tool" && code=$? || code=$?
|
|
|
|
if [ "$code" -eq "0" ]
|
|
then
|
|
continue
|
|
elif [ "$code" -ne "1" ]
|
|
then
|
|
exit $code
|
|
fi
|
|
|
|
echo "*** Installing $tool with Homebrew..."
|
|
brew install "$tool"
|
|
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
|
|
|
|
for gem in $REQUIRED_GEMS
|
|
do
|
|
gem install "$gem"
|
|
done
|
|
}
|
|
|
|
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
|