Files
dot/scripts/gitall
Martin Pander 03c7bc3c59 Initial commit
2020-09-10 09:54:18 +02:00

108 lines
2.4 KiB
Bash
Executable File

#!/bin/bash
declare -a directories=(
"~/Documents/setup"
"~/org"
"~/matlab"
"~/tex"
)
divider="======================================================================="
git="/.git"
noCommits=0
if [ $# -gt 0 ]; then
if [ $1 == p ]; then
flag="p"
elif [ $1 == c ]; then
flag="c"
elif [ $1 == s ]; then
flag="s"
else
echo "wrong flag"
exit 1
fi
else
echo "no arguments"
exit 1
fi
for dir in "${directories[@]}"
do
eval gitdir=$dir$git
if [[ -d "$gitdir" ]]; then
if [ $flag == p ]; then
echo -e "\n"$divider
echo -e "$dir"
echo $divider
eval "git -C $dir pull --all"
elif [ $flag == c ]; then
OUTPUT=$(eval git -c color.status=always -C $dir status )
noCommit=$(echo $OUTPUT | grep -q "nothing to commit, working directory clean")$?
if [[ $noCommit -eq 1 ]]; then
echo -e "\n"$divider
echo -e "$dir"
echo $divider
eval "git -C $dir commit -a"
noCommits=1
fi
elif [ $flag == s ]; then
OUTPUT=$(eval git -c color.status=always -C $dir status )
noCommit=$(echo $OUTPUT | grep -q "nothing to commit, working directory clean")$?
upToDate=$(echo $OUTPUT | grep -q "Your branch is up-to-date")$?
isAhead=$(echo $OUTPUT | grep -q "Your branch is ahead")$?
hasUntracked=$(echo $OUTPUT | grep -q "Untracked files")$?
if [[ $upToDate -eq 1 ]] || [[ $noCommit -eq 1 ]]; then
noCommits=1
echo -e "\n"$divider
echo "$dir"
echo $divider
echo "$OUTPUT"
if [[ $isAhead -eq 0 ]]; then
echo "Push changes to origin? [Y/n]"
read answer
if [[ $answer == Y ]] || [[ $answer == y ]] || [[ -z "${answer}" ]]; then
eval "git -C $dir push"
fi
fi
if [[ $hasUntracked -eq 0 ]]; then
echo "Add untracked files? [Y/n]"
read answer
if [[ $answer == Y ]] || [[ $answer == y ]] || [[ -z "${answer}" ]]; then
eval "git -C $dir add -A $dir"
eval "git -C $dir status"
fi
fi
fi
fi
fi
done
if [[ ( $flag == s ) && ( $noCommits -eq 1 ) ]]; then
echo -e "\n"$divider
echo $divider
echo "Commit all? [Y/n]"
read answer
if [[ $answer == Y ]] || [[ $answer == y ]] || [[ -z "${answer}" ]]; then
eval "gitall c"
fi
fi
if [[ ( $flag == s ) && ( $noCommits -eq 0 ) ]]; then
echo -e "\n"$divider
echo "nothing to be done"
echo $divider
fi
if [[ ( $flag == c ) && ( $noCommits -eq 0 ) ]]; then
echo -e "\n"$divider
echo "nothing to commit, all done"
echo $divider
fi