diff options
-rwxr-xr-x | git-branch-list | 43 | ||||
-rw-r--r-- | t/101-drop-accepts-multiple-branch-arguments.t | 3 |
2 files changed, 32 insertions, 14 deletions
diff --git a/git-branch-list b/git-branch-list index c37ef74..4d75092 100755 --- a/git-branch-list +++ b/git-branch-list @@ -53,20 +53,34 @@ function save_branch () { } function drop_branch () { - local branch=$(branch_or_current_branch "$1") - local input="$branch" + local branches="$@" + local branch_names=() - # Assume `$branch` is an ID if it's not a branch name - if ! is_a_branch "$branch"; then - branch=$(branch_by_id "$branch") + # If no branch arguments were given, default to the current branch. + if [ $# -eq 0 ]; then + branches="$(current_branch)" fi - if [ -z "$branch" ]; then - echo "branch-list: Unrecognised branch '$input'" 1>&2 - exit 1 - fi + for branch in $branches; do + local input="$branch" + + # Assume `$branch` is an ID if it's not a branch name + if ! is_a_branch "$branch"; then + branch=$(branch_by_id "$branch") + fi + + if [ -z "$branch" ]; then + echo "branch-list: Unrecognised branch '$input'" 1>&2 + exit 1 + fi + + branch_names+=("$branch") + done + + for branch in "${branch_names[@]}"; do + sed -i '.bak' "/$branch/d" "$DATABASE" + done - sed -i '.bak' "/$branch/d" "$DATABASE" rm "${DATABASE}.bak" } @@ -94,12 +108,16 @@ function branch_or_current_branch () { local branch="$1" if [ "$branch" = '' ]; then - git rev-parse --abbrev-ref HEAD + current_branch else echo "$branch" fi } +function current_branch () { + git rev-parse --abbrev-ref HEAD +} + function is_a_branch () { local branch="$1" @@ -137,7 +155,8 @@ case "$command" in save_branch "$2" ;; drop) - drop_branch "$2" + shift + drop_branch "$@" ;; clear) clear_branches diff --git a/t/101-drop-accepts-multiple-branch-arguments.t b/t/101-drop-accepts-multiple-branch-arguments.t index b7834df..16767bf 100644 --- a/t/101-drop-accepts-multiple-branch-arguments.t +++ b/t/101-drop-accepts-multiple-branch-arguments.t @@ -30,8 +30,7 @@ system("$BIN drop 1 3"); ok !$?; my $branch_list = qx($BIN); -is $branch_list, ' - 1 second +is $branch_list, ' 1 second '; |