aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xgit-branch-list43
-rw-r--r--t/101-drop-accepts-multiple-branch-arguments.t3
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
';