#!/usr/bin/env bash branch_prefix=feature declare -a argv while test $# != 0 do case $1 in -a|--alias ) if [[ -n $2 ]] then shift # shift -a|-alias branch_prefix=$1 else argv+=($1) # treat tail '-a' as fi ;; * ) argv+=($1) ;; esac shift done concatargs(){ str=$(IFS='-'; echo "$*") branch="$branch_prefix"/$str } if test "${argv[0]}" = "finish"; then test -z "${argv[1]}" && echo "$branch_prefix" " required." 1>&2 && exit 1 branch="$branch_prefix"/"${argv[1]}" git merge --no-ff "$branch" && git delete-branch "$branch" else test -z "${argv[0]}" && echo "$branch_prefix" " required." 1>&2 && exit 1 if test -n "${argv[1]}"; then concatargs "${argv[@]}" else branch="$branch_prefix"/"${argv[0]}" fi git checkout -b $branch fi