dotfiles/packages/git-delete-stale/package.nix

36 lines
871 B
Nix

{pkgs, ...}:
pkgs.writeNushellApplication {
name = "git-delete-stale";
runtimeInputs = with pkgs; [git];
text = ''
let localBranches = (
git branch
| lines
| str trim
| where not ($it | str starts-with '* ')
| where $it != 'master'
)
let remoteBranches = (
git branch -r
| lines
| str trim
| str replace 'origin/' ""
)
let staleBranches = ($localBranches | where { |$local| $local not-in $remoteBranches })
if ($staleBranches | is-empty) {
print 'No stale branches found.'
exit 0
}
let deleteBranches = (gum choose --header "Stale branches to delete" --no-limit ...($staleBranches) | lines | compact -e)
if ($deleteBranches | length) > 0 {
git branch -D ...($deleteBranches)
} else {
print 'No branches selected.'
}
'';
}