#!/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. dependencies=( External/{InAppSettingsKit,Pearl{,:External/jrswizzle,:External/uicolor-utilities},RHStatusItemView} ) ## Custom migration. # None yet. ################################################################################ isCheckedOut() { local modulePath=$1 ! git submodule status | grep -q "^-[^ ]* $modulePath" } # git submodule sync -- A bug causes this to init ALL external dependencies. git submodule sync $(git submodule status | awk '/^ / { print $2 }') # 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