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  '; | 
