#!/bin/sh


progname=`basename $0`

usage()
{ 
	echo "Usage:";
	echo "  ${progname} -u cvs-user -r build-revision [-d destination_dir]";
	echo
	echo "    -u cvs-user            Your cvs username (typically the same as your NetInfo user)"
	echo "    -r build-revision      The build number.  Same as the number in revision.h"
	echo "    -d destination_dir     The (existing) directory you'd like to check out into."
	echo "                           \"/tmp\" is the default"
	echo "    -T                     Don't perform a 'cvs tag'"
	echo "    -F                     Force a 'cvs tag' (cvs tag -F)"
	echo;
	echo "${progname} will create a qtssServer-XXX directory, tag it, then run ~rc/bin/buildit on it."
}

echo



if [ `id -u` != 0 ]
then
	echo "### You must be root to execute this script ###"
	exit 1
fi

args=`getopt u:p:r:d:TFv $*`
stat=$?

if  [ ${stat} -ne 0 ] 
then
		usage;
		exit 2;
fi

do_tag=true
force_tag=""

set -- $args
for i
do
	case "$i" in
		-u) cvs_user=$2; shift; shift;;
		-p) project_dir=$2; shift; shift;;
		-r) build_number=$2; shift; shift;;
		-d) dest_dir=$2; shift; shift;;
		-T) do_tag=false; shift;;
		-F) force_tag="-F"; shift;;
		-v) usage; shift;;
		\?) usage; exit 1;;
		--) shift; break;;
	esac
done

if [ ! ${build_number} ]
then
	echo "## Error: Missing build-revision ##"
	echo
	usage; 
	exit 1;
fi

if [ ! ${cvs_user} ]
then
	echo "## Error: Missing cvs-user ##"
	echo
	usage; 
	exit 1;
fi

##
##arguments look good...continue
##

orig_dir=`pwd`  #remember our original working directory
slt_repository=/Network/Servers/svrsol/Workgroup/CVS-Repository
slt_parent_module=Servers/Mothra/


## use /tmp if a destination directory is not specified
if [ ! ${dest_dir} ]
then
	echo Setting dest_dir to /tmp
	dest_dir='/tmp'
fi

echo;echo "##"
echo "## Updating from CVS ##"
echo "##"
project_dirname=qtssServer-${build_number}		#set project_dir to absolute path
project_path=${dest_dir}/${project_dirname}		#set project_dir to absolute path


##remove and prior attampts
#
if [ -d ${project_path} ]
then
	echo;echo Removing ${project_path}
	rm -r ${project_path}
fi

##cd into ${dest_dir}
#
cd ${dest_dir}

##checkout main server source
#
echo; echo Checking out StreamingServer to ${project_path}
echo "___________________________________________________"
echo sudo -u ${cvs_user} cvs -d cvs.opensource.apple.com:/cvs/Darwin -s CVS_RSH=ssh -z3 checkout -d ${project_dirname} StreamingServer
sudo -u ${cvs_user} cvs -d cvs.opensource.apple.com:/cvs/Darwin -s CVS_RSH=ssh -z3 checkout -d ${project_dirname} StreamingServer


##cd into ${project_path}
#
cd ${project_path}

##checkout StreamingLoadTool
#
echo;echo Checking out StreamingLoadTool
echo sudo -u ${cvs_user} cvs -d ${slt_repository} -z3 checkout -d StreamingLoadTool ${slt_parent_module}StreamingLoadTool
sudo -u ${cvs_user} cvs -d ${slt_repository} -z3 checkout -d StreamingLoadTool ${slt_parent_module}StreamingLoadTool

if ( ${do_tag} ) then
	echo;echo "Tagging current files as qtssServer-${build_number}"
	echo "_____________________________________________"

	cd ${project_path}
	echo cvs ${cvs_options} -q tag ${force_tag} -R qtssServer-${build_number}
	sudo -u ${cvs_user} cvs ${cvs_options} -q tag ${force_tag} -R qtssServer-${build_number}
	
	cd ${project_path}/StreamingLoadTool
	echo cvs ${cvs_options} -q tag ${force_tag} -R qtssServer-${build_number}
	sudo -u ${cvs_user} cvs ${cvs_options} -q tag ${force_tag} -R qtssServer-${build_number}
fi

cd ${orig_dir}

echo "##"
echo "Executing buildit on ${project_path}"
echo "_________________________________________"
echo ~rc/bin/buildit ${project_path}
~rc/bin/buildit ${project_path}


echo "#################################"
echo "#################################"
echo;echo
echo If you would like to submit this project now, type the
echo train name (ex. Cartman) and hit enter:
read train_name

if [ ! ${train_name} ]
then
	echo
	exit 0;
fi


echo Copying ${project_path} to your home directoy
cp -r ${project_path} ~

cd ~
echo sudo -u ${cvs_user} ~rc/bin/submitproject ${project_dirname} ${train_name}
sudo -u ${cvs_user} ~rc/bin/submitproject ${project_dirname} ${train_name}

exit 0
