#!/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 ;; -r|--remote ) if [[ -n $2 ]] then remote=$2 shift else remote="origin" 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 if [[ -n $remote ]] then git create-branch -r $remote $branch else git create-branch $branch fi fi