module Cp8Cli module Commands class Cleanup def run Command.title "Cleaning merged story branches for [#{target}]" update_remotes remove_fully_merged_local_branches remove_fully_merged_remote_branches Command.success "Deleted branches merged with [#{target}]" end private def target @_target ||= Branch.current.target end def update_remotes Command.run "git fetch" Command.run "git remote prune origin" end def remove_fully_merged_local_branches Command.run "git branch --merged origin/#{target} | grep '#{filter}' | xargs git branch -D" end def remove_fully_merged_remote_branches Command.run "git branch -r --merged origin/#{target} | sed 's/ *origin\\///' | grep '#{filter}' | xargs -I% git push origin :%" end def filter "\\.#{target}\\." end end end end