#!/bin/sh
# gbd -- interactive git branch deletion with fzf
set -eu
protected="main master develop"
branches=$(git branch --sort=-committerdate | sed 's/^..//' | grep -v "^$(git branch --show-current)$")
for p in $protected; do
branches=$(echo "$branches" | grep -v "^${p}$" || true)
done
if [ -z "$branches" ]; then
echo "No deletable branches"
exit 0
fi
selected=$(echo "$branches" | fzf -m \
--header "Select branches to delete (TAB to multi-select)" \
--preview 'git log --oneline --graph --color=always {} | head -20')
if [ -n "$selected" ]; then
echo "$selected" | while read -r branch; do
git branch -d "$branch" 2>/dev/null || echo "Cannot delete $branch (not fully merged, use -D to force)"
done
fi