2011-11-30 21:42:40 +00:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
# This script should be in the 'Scripts' directory under the git repository's root.
|
|
|
|
cd "${BASH_SOURCE%/*}/.."
|
|
|
|
shopt -s extglob
|
|
|
|
|
|
|
|
|
|
|
|
## Submodules that need to be checked out.
|
2013-11-30 01:43:19 +00:00
|
|
|
dependencies=( External/{FontReplacer,InAppSettingsKit,Pearl{,:External/jrswizzle,:External/uicolor-utilities,:External/iOSPorts},google-plus-ios-sdk,UbiquityStoreManager,RHStatusItemView,LoveLyndir} )
|
2011-11-30 21:42:40 +00:00
|
|
|
|
|
|
|
## Custom migration.
|
2012-01-12 16:28:20 +00:00
|
|
|
# None yet.
|
2011-11-30 21:42:40 +00:00
|
|
|
|
|
|
|
|
|
|
|
################################################################################
|
|
|
|
isCheckedOut() {
|
|
|
|
local modulePath=$1
|
|
|
|
! git submodule status | grep -q "^-[^ ]* $modulePath"
|
|
|
|
}
|
|
|
|
|
2013-09-19 15:27:47 +00:00
|
|
|
# git submodule sync -- A bug causes this to init ALL external dependencies.
|
|
|
|
git submodule sync $(git submodule status | awk '/^ / { print $2 }')
|
|
|
|
|
2011-11-30 21:42:40 +00:00
|
|
|
|
|
|
|
# Check out our missing dependencies
|
|
|
|
for dependency in "${dependencies[@]}"; do
|
|
|
|
[[ $dependency = *:* ]] && root=${dependency%%:*} || root=.
|
|
|
|
path=${dependency#*:}
|
|
|
|
( cd "$root"; git submodule update --init "$path" )
|
|
|
|
done
|
|
|
|
|
|
|
|
|
|
|
|
# Update our modules
|
|
|
|
git submodule update
|
|
|
|
|
|
|
|
|
|
|
|
# Our modules may define a custom update script, if so, run it.
|
|
|
|
find !(Scripts)/ -name "${BASH_SOURCE##*/}" -exec {} \;
|
|
|
|
|
|
|
|
|
|
|
|
# Finally, for our modules that haven't got a custom update script, update them recursively.
|
|
|
|
git submodule update --recursive --rebase
|