#!/usr/bin/env bash
# This script should be in the 'Scripts' directory under the git repository's root.
cd "${BASH_SOURCE%/*}/.."
shopt -s extglob


## LisuUI
#
## Submodules that need to be checked out.
dependencies=( External/Pearl External/Pearl:External/jrswizzle External/Pearl:External/uicolor-utilities External/Pearl:External/iOSPorts )

## Custom migration.
# None yet.


################################################################################
isCheckedOut() {
    local modulePath=$1
    ! git submodule status | grep -q "^-[^ ]* $modulePath"
}


# 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 sync -- A bug causes this to init ALL external dependencies.
git submodule sync $(git submodule status | awk '/^ / { print $2 }')
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