#!/bin/bash

echo "qsub: start"

TEMP=`getopt -o t:N:q:v:o:e:l:p:j: -a --long hold_jid:,notify -n 'qsub' -- "$@"`
if [ $? != 0 ] ; then echo "Terminating..." >&2 ; exit 1 ; fi
eval set -- "$TEMP"

echo "qsub: args='$@'"


SGE_t=1-1
SGE_o=/dev/stdout
SGE_e=/dev/stderr

while true ; do
	case "${1}" in
		--hold_jid)
#			eval SGE_${1:2}=${2}
			shift 2
			;;
		-e|-o|-t|-N|-q|-l|-p|-j)
			eval SGE_${1:1}=${2}
			shift 2
			;;
		-v)
			IFS=$','
			for v in ${2}; do
				NAME=${v%%=*}
				if [ ${#v} == ${#NAME} ] ; then
					VALUE=$(unset IFS; eval echo \$\{${NAME}\})
				else
					VALUE=${v#*=}
				fi
				SGE_ENV="${SGE_ENV} ${NAME}=\"${VALUE}\""
			done
			unset IFS
			shift 2
			;;
		--)
			shift
			break
			;;
		--notify)
		    shift
		    ;;
		*) echo "Internal error!" ; exit 1 ;;
	esac
done

for arg do
	for t in $(seq ${SGE_t/%-*/} ${SGE_t/#*-/}) ; do
		CMD="SGE_TASK_ID=${t}${SGE_ENV} ${arg} 1>${SGE_o} 2>${SGE_e}"
		echo "qsub: exec \"${CMD}\"" 
		eval ${CMD}
	done
done

echo "qsub: done"
