LOCAL_BRANCH=$1
BUILD_FROM_TAG=$2
REMOTE_BRANCH=$3
FALLBACK_BRANCH=$4
ROOT_PATH=$5
SCOUT_SUBMODULE=0
CHECKOUT_SUCCESSFUL=0

function isScoutSubmodule()
{
	SCOUT_SUBMODULE=0
	if [ ! -z $(pwd | grep $ROOT_PATH/org.eclipse.scout) ]; then
		SCOUT_SUBMODULE=1
	fi
}

function buildFromTag()
{
	local tag=$1
	local localbranch=$1
	local remotebranch=$2
	git fetch --tags
	git show-ref --tags --verify --quiet refs/tags/$tag
	if [ $? -eq 0 ]; then
		git checkout $tag
	else
		checkoutLocalOrRemoteBranch $localbranch $remotebranch
	fi
}

function checkoutLocalBranch()
{
	local localbranch=$1
	local remotebranch=$2
	
	CHECKOUT_SUCCESSFUL=0
	if [ ! -z "$(git branch | grep $localbranch)" ]; then
		git checkout $localbranch
		git pull origin $remotebranch
		CHECKOUT_SUCCESSFUL=1
	fi
}

function checkoutRemoteBranch()
{
	local localbranch=$1
	local remotebranch=$2

	CHECKOUT_SUCCESSFUL=0	
	if [ ! -z "$(git branch -r | grep origin/$remotebranch)" ]; then
		git checkout -b $localbranch origin/$remotebranch
		git pull origin $remotebranch
		CHECKOUT_SUCCESSFUL=1
	fi
}

function checkoutLocalOrRemoteBranch()
{
	local localbranch=$1
	local remotebranch=$2
	
	CHECKOUT_SUCCESSFUL=0
	checkoutLocalBranch $localbranch $remotebranch
	
	if [ $CHECKOUT_SUCCESSFUL -eq 0 ]; then
		checkoutRemoteBranch $localbranch $remotebranch
	fi
}

git rm --cached -r . > /dev/null
git reset --hard > /dev/null

isScoutSubmodule
if [ $SCOUT_SUBMODULE -eq 1 ]; then
	if [ $BUILD_FROM_TAG == "true" ]; then
		buildFromTag $LOCAL_BRANCH $REMOTE_BRANCH
	else
		checkoutLocalOrRemoteBranch $LOCAL_BRANCH $REMOTE_BRANCH
	fi
else
	checkoutLocalOrRemoteBranch $FALLBACK_BRANCH $FALLBACK_BRANCH
fi