#!/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 <name>
        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" "<name> 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" "<name> 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
