You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
depot_tools/crup-runner.sh

57 lines
1.6 KiB
Bash

#!/bin/bash
if [ -z "$*" ]; then
exit 0
fi
set -o pipefail
dir="$1"
solution="${1%%/*}"
cd "$solution"
if [ "$solution" = "$1" ]; then
shift
# Don't "pull" if checkout is not on a named branch
if test "$2" = "pull" && ( ! git symbolic-ref HEAD >/dev/null 2>/dev/null ); then
first_args="$1 fetch"
else
first_args="$1 $2"
fi
shift 2
$first_args $@ | sed "s/^/[$solution] /g" 1>&2
if [ $? -ne 0 ]; then
exit $?
fi
"$GIT_EXE" submodule --quiet sync
"$GIT_EXE" ls-files -s | grep ^160000 | awk '{print $4}' |
while read submod; do
# Check whether this submodule should be ignored or updated.
# If it's a new submodule, match the os specified in .gitmodules against
# the os specified in .git/config.
update_policy=$(git config "submodule.$submod.update" 2>/dev/null)
if [ -z "$update_policy" ]; then
target_os=$(git config target.os 2>/dev/null)
submod_os=$(git config -f .gitmodules "submodule.$submod.os" 2>/dev/null)
if [ -n "$target_os" -a -n "$submod_os" ] &&
[ "$submod_os" != "all" -a "$submod_os" != "$target_os" ]; then
update_policy=none
else
update_policy=checkout
fi
git config "submodule.$submod.update" $update_policy 2>/dev/null
fi
if [ "$update_policy" != "none" ]; then
echo "$solution/$submod"
fi
done
status=$?
else
submodule="${1#*/}"
echo "[$solution] updating $submodule ..."
"$GIT_EXE" submodule update --quiet --init "$submodule" |
( grep -v '^Skipping submodule' || true ) | sed "s|^|[$1] |g"
status=$?
if [ "$status" -ne "0" ]; then
echo "[$solution] FAILED to update $submodule"
fi
fi
exit $status