From 962abcef80c6b7b5dd2ae960b984a41716514470 Mon Sep 17 00:00:00 2001 From: Ethan P Date: Fri, 4 Oct 2019 11:43:36 -0700 Subject: Update create.sh to quickly check for and update missing submodules --- assets/create.sh | 36 ++++++++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/assets/create.sh b/assets/create.sh index d95ffa31..0ebd1dcd 100755 --- a/assets/create.sh +++ b/assets/create.sh @@ -2,10 +2,42 @@ 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 -- cgit v1.2.3