| #!/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"} | |
| 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 | |
| } | |
| 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 |