#!/bin/bash

#echo $*
FILE=$1
FILE_XSW=/tmp/$FILE.xsw
shift
EXECUTABLE_PATH=${FILE%.jsdl}

#Substitute jsdl arguments for xsubwrapper params
function substArguments {
	xml ed -O -N jsdl='http://schemas.ggf.org/jsdl/2005/11/jsdl' -N jsdl-posix='http://schemas.ggf.org/jsdl/2005/11/jsdl-posix' -d '/jsdl:JobDefinition/jsdl:JobDescription/jsdl:Application/jsdl-posix:POSIXApplication/jsdl-posix:Argument' $FILE > $FILE_XSW
	cp ${FILE_XSW} ${FILE_XSW}.2
	for p in $*
	do
		xml ed -O -N jsdl='http://schemas.ggf.org/jsdl/2005/11/jsdl' -N jsdl-posix='http://schemas.ggf.org/jsdl/2005/11/jsdl-posix' -s '/jsdl:JobDefinition/jsdl:JobDescription/jsdl:Application/jsdl-posix:POSIXApplication' -t elem -n 'Argument' -v $p $FILE_XSW.2 > $FILE_XSW
		cp $FILE_XSW $FILE_XSW.2
	done

}

#MAIN
if [[ ${EXECUTABLE_PATH:0:2} == ./ ]] 
then
	EXECUTABLE=${EXECUTABLE_PATH#./}
	if [[ -e $PWD/$EXECUTABLE ]]
	then
		EXECUTABLE_PATH=$PWD/$EXECUTABLE
	else
		FOUND=0
		for p in ${PATH//:/$'\n'}
		do
			#echo $p/$EXECUTABLE
			if [[ -e $p/$EXECUTABLE ]]
			then
				EXECUTABLE_PATH=$p/$EXECUTABLE
				FOUND=1
			fi
		done
		if [[ FOUND -eq 0 ]]
		then
			EXECUTABLE_PATH=$PWD/$EXECUTABLE
		fi
	fi 
else
	EXECUTABLE=`basename $EXECUTABLE_PATH`
fi

echo $EXECUTABLE_PATH
echo $EXECUTABLE

if [[ -s $FILE ]] 
then
	#echo "$FILE ok"
	if [ $# -gt 0 ]
	then
		echo "Submitting JSDL with explicit parameters"
		substArguments $*
		FILE=$FILE_XSW
	fi
	/usr/bin/xsub -f $FILE
else
	#echo "$FILE is empty"
	echo "Creating JSDL contents and submitting it: $FILE "
	xsub.sh $EXECUTABLE_PATH $* -out $EXECUTABLE.out -err $EXECUTABLE.err -keep $FILE
fi 

