platform/common/scripts/each-diff.sh

44 lines
941 B
Bash
Raw Normal View History

#!/usr/bin/env bash
FILES=$(git diff origin/main --name-only --diff-filter=ACMR | sed 's| |\\ |g')
[ -z "$FILES" ] && exit 0
roots=$(rush list -p --json | grep "path" | cut -f 2 -d ':' | cut -f 2 -d '"')
declare -a changed_roots
pushd () {
command pushd "$@" > /dev/null
}
popd () {
command popd "$@" > /dev/null
}
if [ -n "$FILES" ]; then
for file in $FILES; do
# Match file to root
for r in $roots; do
if [[ "$file" == ${r}* ]]; then
echo -e "${file}"
if [[ ! " ${changed_roots[@]} " =~ " ${r} " ]]; then
changed_roots+=("$r")
fi
fi
done
done
for value in "${changed_roots[@]}"; do
echo -e "\033[0;34mProcessing \033[0;31m${value}\033[0m"
exec 3>&1
exec 1> >(paste /dev/null -)
pushd $value > /dev/null
$@
retVal=$?
if [ $retVal -ne 0 ]; then
echo "Error"
exit 1
fi
popd > /dev/null
exec 1>&3 3>&-
done
fi