#!/bin/bash export SCRIPT_DIR=$(dirname "$0") ## ## Configuration Variables ## SCHEMES="$@" config () { # The workspace to build. # # If not set and no workspace is found, the -workspace flag will not be passed # to `xctool`. # # Only one of `XCWORKSPACE` and `XCODEPROJ` needs to be set. The former will # take precedence. : ${XCWORKSPACE=$(find_pattern "*.xcworkspace")} # The project to build. # # If not set and no project is found, the -project flag will not be passed # to `xctool`. # # Only one of `XCWORKSPACE` and `XCODEPROJ` needs to be set. The former will # take precedence. : ${XCODEPROJ=$(find_pattern "*.xcodeproj")} # A bootstrap script to run before building. # # If this file does not exist, it is not considered an error. : ${BOOTSTRAP="$SCRIPT_DIR/bootstrap"} # Extra options to pass to xctool. : ${XCTOOL_OPTIONS="RUN_CLANG_STATIC_ANALYZER=NO"} # A whitespace-separated list of default schemes to build. # # Individual names can be quoted to avoid word splitting. : ${SCHEMES:=Squirrel} export XCWORKSPACE export XCODEPROJ export BOOTSTRAP export XCTOOL_OPTIONS export SCHEMES } ## ## Code Signing ## setup_keychain () { KEY_CHAIN=build.keychain security create-keychain -p travis $KEY_CHAIN security default-keychain -s $KEY_CHAIN security unlock-keychain -p travis $KEY_CHAIN security set-keychain-settings -t 3600 -u $KEY_CHAIN security import script/certs.p12 -k build.keychain -P $KEY_PASSWORD -T /usr/bin/codesign } ## ## Build Process ## main () { config setup_keychain if [ -f "$BOOTSTRAP" ] then echo "*** Bootstrapping..." "$BOOTSTRAP" || exit $? fi echo "*** The following schemes will be built:" echo "$SCHEMES" | xargs -n 1 echo " " echo echo "$SCHEMES" | xargs -n 1 | ( local status=0 while read scheme do build_scheme "$scheme" || status=1 done exit $status ) } find_pattern () { ls -d $1 2>/dev/null | head -n 1 } parse_build () { awk -f "$SCRIPT_DIR/xctool.awk" 2>&1 >/dev/null } build_scheme () { echo "*** Cleaning Squirrel..." xcodebuild -scheme Squirrel -workspace Squirrel.xcworkspace clean >/dev/null || exit $? echo "*** Building Squirrel..." echo xcodebuild -scheme Squirrel -workspace Squirrel.xcworkspace build } export -f build_scheme export -f parse_build main