git-utils/bin/git-pullall
Alex A. Naanou 30b950db24 added -d to listall...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
2024-10-03 16:08:09 +03:00

67 lines
918 B
Bash
Executable File

#!/usr/bin/env bash
while true ; do
case $1 in
-h|--help)
echo "Usage: $(basename "$0") [OPTIONS] [PATH]"
echo
echo "Pull all repositories in PATH."
echo
echo "Options:"
echo " -h --help - print this message and exit"
echo " -r --recursive - pull directories recursively"
echo
exit
;;
-r|--recursive)
RECURSIVE=-r
shift
continue
;;
-*|--*)
echo "Error: unknown option: \"$1\"" >&2
exit
;;
*)
TARGET_PATH=$1
break
;;
esac
done
TARGET_PATH=${TARGET_PATH:=.}
cd "$TARGET_PATH"
IFS=$'\n'
DIRS=($(git listall -d ${RECURSIVE}))
# inside a repo...
if [ -d ./.git ] ; then
git pull
exit 0
fi
# no matches...
if [[ $DIRS =~ \* ]] ; then
echo "no repos found." >&2
exit 1
fi
# do the update...
wd=$(pwd)
for dir in "${DIRS[@]}" ; do
dir="${dir%.git}"
echo "$dir"
cd "$dir"
git pull
cd "$wd"
echo
done
# vim:set sw=4 ts=4 :