108 lines
2.4 KiB
Bash
Executable File
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
|
|
|