#!/usr/bin/env bash

while test $# != 0
do
	case $1 in
		-r|--remote)
			if [[ -n $2 ]]
			then
				REMOTE=$2
				shift
			else			
				REMOTE=origin
			fi
			;;
		*)
			BRANCH=$1
	esac
	shift
done

if [[ -z $BRANCH ]] && [[ -n $REMOTE ]] 
then
	BRANCH=$REMOTE
	REMOTE=origin
fi

test -z $BRANCH && echo "branch required." 1>&2 && exit 1
if [[ -n $REMOTE ]]
then
	git ls-remote --exit-code $REMOTE &>/dev/null
	if [ $? = 0 ]
	then
		git push $REMOTE HEAD:refs/heads/$BRANCH
		git fetch $REMOTE
		git checkout --track -b $BRANCH $REMOTE/$BRANCH
		exit $?
	fi
fi

git checkout -b $BRANCH
