circuitpython/tools/fetch-submodules.sh

24 lines
937 B
Bash
Executable File

#!/usr/bin/env sh
# Pass the directories of submodules to fetch as command-line arguments. For example:
# ./fetch-submodules.sh lib tools
# If no arguments are passed, all submodules will be fetched.
# This script handles being called at other than the top level by making the paths
# for the submodules absolute.
TOP=$(git rev-parse --show-toplevel)
git submodule sync --quiet
# Prefix all the args with the absolute path to the top of the repo.
abs_submodules=""
for d in "$@"; do
abs_submodules="${abs_submodules} ${TOP}/${d}"
done
echo ${abs_submodules}
# Fetch submodules as partial clones if possible. If that fails due to an older version of git,
# do a shallow init and fetch tags.
git submodule update --init --filter=blob:none ${abs_submodules} || \
git submodule update --init --depth 1 ${abs_submodules} && \
git submodule foreach 'git fetch --tags --depth 1' || \
echo "ERROR: fetch-submodules.sh FAILED"