mirror of
https://github.com/charmbracelet/gum
synced 2024-06-05 23:32:19 +02:00
docs: add git-branch-manager.sh
From @andrew8088's video on Gum: https://www.youtube.com/watch?v=tnikefEuArQ
This commit is contained in:
parent
bcfded82c8
commit
5f4cc48069
64
examples/git-branch-manager.sh
Normal file
64
examples/git-branch-manager.sh
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
#! /bin/sh
|
||||||
|
|
||||||
|
# This script is used to manage git branches such as delete, update, and rebase
|
||||||
|
# them. It prompts the user to choose the branches and the action they want to
|
||||||
|
# perform.
|
||||||
|
#
|
||||||
|
# For an explanation on the script and tutorial on how to create it, watch:
|
||||||
|
# https://www.youtube.com/watch?v=tnikefEuArQ
|
||||||
|
|
||||||
|
GIT_COLOR="#f14e32"
|
||||||
|
|
||||||
|
git_color_text () {
|
||||||
|
gum style --foreground "$GIT_COLOR" "$1"
|
||||||
|
}
|
||||||
|
|
||||||
|
get_branches () {
|
||||||
|
if [ ${1+x} ]; then
|
||||||
|
gum choose --selected.foreground="$GIT_COLOR" --limit="$1" $(git branch --format="%(refname:short)")
|
||||||
|
else
|
||||||
|
gum choose --selected.foreground="$GIT_COLOR" --no-limit $(git branch --format="%(refname:short)")
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
git rev-parse --git-dir > /dev/null 2>&1
|
||||||
|
|
||||||
|
if [ $? -ne 0 ];
|
||||||
|
then
|
||||||
|
echo "$(git_color_text "!!") Must be run in a $(git_color_text "git") repo"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
gum style \
|
||||||
|
--border normal \
|
||||||
|
--margin "1" \
|
||||||
|
--padding "1" \
|
||||||
|
--border-foreground "$GIT_COLOR" \
|
||||||
|
"$(git_color_text ' Git') Branch Manager"
|
||||||
|
|
||||||
|
echo "Choose $(git_color_text 'branches') to operate on:"
|
||||||
|
branches=$(get_branches)
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "Choose a $(git_color_text "command"):"
|
||||||
|
command=$(gum choose --cursor.foreground="$GIT_COLOR" rebase delete update)
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
echo $branches | tr " " "\n" | while read -r branch
|
||||||
|
do
|
||||||
|
case $command in
|
||||||
|
rebase)
|
||||||
|
base_branch=$(get_branches 1)
|
||||||
|
git fetch origin
|
||||||
|
git checkout "$branch"
|
||||||
|
git rebase "origin/$base_branch"
|
||||||
|
;;
|
||||||
|
delete)
|
||||||
|
git branch -D "$branch"
|
||||||
|
;;
|
||||||
|
update)
|
||||||
|
git checkout "$branch"
|
||||||
|
git pull --ff-only
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
Loading…
Reference in a new issue