Update create.sh to quickly check for and update missing submodules
set -euo pipefail
ASSET_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+REPO_DIR="$ASSET_DIR/.."
# Ensure submodules are initialized.
-git submodule init
-git submodule update
+function update_submodules() {
+ local submodule
+ local submodule_prompt=unspecified
+ local submodule_path
+
+ {
+ while { read -r submodule && read -r submodule_path; } <&3; do
+ if ! [[ -d "${REPO_DIR}/.git/modules/${submodule}" ]] && [[ -d "${REPO_DIR}/${submodule_path}" ]]; then
+ if [[ "$submodule_prompt" = "unspecified" ]]; then
+ echo "One or more submodules were found to be uninitialized."
+ printf "Initialize and update them? [Y/n] "
+ read -r submodule_prompt
+ fi
+
+ case "$submodule_prompt" in
+ y|yes|'') {
+ git -C "$REPO_DIR" submodule update --init "$submodule_path"
+ };;
+ n|no) {
+ return
+ };;
+ *) {
+ echo "Unknown answer. Not updating submodules."
+ };;
+ esac
+ fi
+ done
+ } 3< <(git config --file "${REPO_DIR}/.gitmodules" --null --get-regexp path | xargs -0 printf "%s\n" | sed 's/^submodule.//;s/.path$//')
+}
+
+if [ -t 0 ]; then
+ update_submodules
+fi
# Always remove the local cache to avoid any confusion
bat cache --clear
