#!/bin/bash
export PATH=$PATH:.
appDir=$(pwd)
if [ "$#" != 3 -a "$#" != 4 ]
then
	echo "Usage $0 releaseDir  loginId emailAddress [gitLocalRepository]"
	echo "Note: Specify the gitLocalRepository path if you would want to be able to import flows from your local git repository"
	exit
fi 
if [ ! -e "releases" ]
then
	mkdir releases
fi
releaseDir="$1"
name="Release $releaseDir"
loginId="$2"
emailid="$3"
dbHost="dbhost"
dbPort="3306"
dbName="sdnctl"
dbUser="sdnctl"
dbPassword="gamma"
gitLocalRepository="$4"

lastPort=$(find "releases/" -name "customSettings.js" |xargs grep uiPort|cut -d: -f2|sed -e s/,//|sort|tail -1)
echo $lastPort|grep uiPort >/dev/null 2>&1
if [ "$?" == "0" ]
then
lastPort=$(find "releases/" -name "customSettings.js" |xargs grep uiPort|cut -d: -f3|sed -e s/,//|sort|tail -1)
fi
#echo $lastPort
if [ "${lastPort}" == "" ]
then
	lastPort="3099"
fi
let nextPort=$(expr $lastPort+1)
#echo $nextPort
if [ ! -e "releases/$releaseDir" ]
then
mkdir releases/$releaseDir
cd releases/$releaseDir
mkdir flows
mkdir flows/shared
mkdir flows/shared/backups
mkdir html
mkdir xml
mkdir lib
mkdir lib/flows
mkdir logs
mkdir conf
mkdir codecloud
customSettingsFile="customSettings.js"
if [ ! -e "./$customSettingsFile" ]
then
	echo "module.exports = {" >$customSettingsFile
	echo "		'name' : '$name'," >>$customSettingsFile
	echo "		'emailAddress' :'$emailid'," >>$customSettingsFile
	echo "		'uiPort' :$nextPort," >>$customSettingsFile
	echo "		'mqttReconnectTime': 15000," >>$customSettingsFile
	echo "		'serialReconnectTime' : 15000,"  >>$customSettingsFile
	echo "		'debugMaxLength': 1000," >>$customSettingsFile
	echo "		'htmlPath': 'releases/$releaseDir/html/'," >>$customSettingsFile
	echo "		'xmlPath': 'releases/$releaseDir/xml/'," >>$customSettingsFile
	echo "		'flowFile' : 'releases/$releaseDir/flows/flows.json'," >>$customSettingsFile
	echo "		'sharedDir': 'releases/$releaseDir/flows/shared'," >>$customSettingsFile
	echo "		'userDir' : 'releases/$releaseDir'," >>$customSettingsFile
	echo "		'httpAuth': {user:'$loginId',pass:'cc03e747a6afbbcbf8be7668acfebee5'}," >>$customSettingsFile
	echo "		'dbHost': '$dbHost'," >>$customSettingsFile
	echo "		'dbPort': '$dbPort'," >>$customSettingsFile
	echo "		'dbName': '$dbName'," >>$customSettingsFile
	echo "		'dbUser': '$dbUser'," >>$customSettingsFile
	echo "		'dbPassword': '$dbPassword'," >>$customSettingsFile
	echo "		'gitLocalRepository': '$gitLocalRepository'" >>$customSettingsFile
	echo "		}" >>$customSettingsFile
fi
	#echo "Created custom settings  file $customSettingsFile"
	echo "Done ....."
else
	echo "ERROR:customSettings file $customSettingsFile already exists for $releaseDir"	
	exit
fi
#echo "Content of custom settings file"
#echo "============================================================================"
#	cat $customSettingsFile
#echo "============================================================================"
svclogicPropFile="./conf/svclogic.properties"
if [ ! -d "${appDir}/yangFiles" ]
then
	mkdir -p "${appDir}/yangFiles" 
fi
if [ ! -d "${appDir}/generatedJS" ]
then
	mkdir -p "${appDir}/generatedJS" 
fi

if [ ! -e "./$svclogicPropFile" ]
then
	echo "org.openecomp.sdnc.sli.dbtype=jdbc" >$svclogicPropFile
	echo "org.openecomp.sdnc.sli.jdbc.url=jdbc:mysql://dbhost:3306/sdnctl" >>$svclogicPropFile
	echo "org.openecomp.sdnc.sli.jdbc.database=sdnctl" >>$svclogicPropFile
	echo "org.openecomp.sdnc.sli.jdbc.user=sdnctl" >>$svclogicPropFile
	echo "org.openecomp.sdnc.sli.jdbc.password=gamma" >>$svclogicPropFile
fi
if [ ! -e "${appDir}/flowShareUsers.js" ]
then
	echo "module.exports = {\"flowShareUsers\":" >${appDir}/flowShareUsers.js
        echo "	[" >>${appDir}/flowShareUsers.js
        echo "	]" >>${appDir}/flowShareUsers.js
        echo "}" >>${appDir}/flowShareUsers.js
fi
grep "$releaseDir" ${appDir}/flowShareUsers.js >/dev/null 2>&1
if [ "$?" != "0" ]
then
	num_of_lines=$(cat ${appDir}/flowShareUsers.js|wc -l)
	if [ $num_of_lines -gt 4 ]
	then
		content=$(head -n -2 ${appDir}/flowShareUsers.js)
		echo "${content}," > ${appDir}/flowShareUsers.js
	else
		content=$(head -n -2 ${appDir}/flowShareUsers.js)
		echo "$content" > ${appDir}/flowShareUsers.js
	fi
	echo "	{" >> ${appDir}/flowShareUsers.js
	echo "          \"name\" : \"$name\"," >> ${appDir}/flowShareUsers.js
	echo "          \"rootDir\" : \"$releaseDir\"" >> ${appDir}/flowShareUsers.js
	echo "	}" >> ${appDir}/flowShareUsers.js
	echo "	]" >> ${appDir}/flowShareUsers.js
	echo "}" >> ${appDir}/flowShareUsers.js
fi
