scripts/gupdater
2022-12-26 14:20:37 +01:00

60 lines
1.2 KiB
Bash
Executable File

#!/bin/env bash
# simple script to take a list of path in system of
# git repos then doing specified action for it
starting_dir=$(pwd)
Push () {
cd "$Path"
[ -z "$(git status -s)" ] && printf '\n%s\n' "Repo $Path already up to date." && return
printf '\n%s\n' "In repo $Path"
commited="n"
done="n"
while [ ! -z "$(git status -s)" ] && [ "$done" != "y" ]; do
toCommit=$(git status -s | awk '{ print $2 }' | fzf -m)
if [ ! -z "$toCommit" ]; then
git add "$toCommit"
read -p 'Commit message: ' message < /dev/tty
git commit -m "$message"
commited="y"
fi
[ ! -z "$(git status -s )" ] && read -p "Have you commited everything you wanted to [y/n]: " done < /dev/tty
done
[ "$commited" = "y" ] && git push
printf '\n%s\n' "Repo $Path pushed completely."
}
Pull () {
cd $Path
printf '\n%s\n' "In repo $Path"
git pull
printf '\n%s\n' "Repo $Path updated."
}
while read -a Line; do
Action=${Line[0]}
Path=${Line[1]}
if [ "$Action" = "push" ]; then
Push
fi
if [ "$Action" = "pull" ]; then
Pull
fi
done <<< "$(< $HOME/.config/gupdate/repos)"
cd "$starting_dir"