git-utils/bin/git-listall
Alex A. Naanou 483f62db83 refactoring and cleanup...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
2023-09-08 06:11:09 +03:00

76 lines
1.1 KiB
Bash
Executable File

#!/usr/bin/env bash
while true ; do
case $1 in
-h|--help)
echo "Usage: $(basename "$0") [OPTIONS] [PATH]"
echo
echo "List all repositories in PATH."
echo
echo "Options:"
echo " -h --help - print this message and exit"
echo " -r --recursive - list directories recursively"
echo " -o --origin - also print origin url"
echo
exit
;;
-r|--recursive)
RECURSIVE=1
shift
continue
;;
-o|--origin)
ORIGIN=1
shift
continue
;;
-*|--*)
echo "Error: unknown option: \"$1\"" >&2
exit
;;
*)
TARGET_PATH=$1
break
;;
esac
done
TARGET_PATH=${TARGET_PATH:=.}
cd "$TARGET_PATH"
if [ $RECURSIVE ] ; then
IFS=$'\n' \
DIRS=($(find . -name .git | sort))
else
IFS=$'\n' \
DIRS=(./*/.git)
fi
# XXX handle local repos...
getOrigin(){
if ! [ -z $ORIGIN ] ; then
cd "$1"
echo "=`git ls-remote --get-url origin`"
cd "$wd"
fi
}
# inside a repo...
if [ -d ./.git ] ; then
echo ".`getOrigin .`"
exit 0
fi
# do the update...
wd=$(pwd)
for dir in ${DIRS[@]} ; do
dir=${dir%.git}
echo "$dir`getOrigin "$dir"`"
done
# vim:set sw=4 ts=4 :