Initial commit
This commit is contained in:
107
scripts/gitall
Executable file
107
scripts/gitall
Executable file
@ -0,0 +1,107 @@
|
||||
#!/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
|
||||
|
||||
Reference in New Issue
Block a user