#!/bin/bash
# RemoteBatchAppScript:makeMPINoRankTemplate
# SubmissionScripts/Distributor/Batch/APP/mpinorank
#
SCRIPT=`basename $0`
WORKINGDIR=`dirname $0`

args=( "$@" )
for (( i1=0 ; i1 < ${#args[@]} ; i1++ )) ; do
   if   [ "${args[i1]}" = "-p4pg" ] ; then
      p4rank=0
   elif [ "${args[i1]}" = "-p4wd" ] ; then
      (( i1++ ))
      args[${i1}]=${WORKINGDIR}
   elif [ "${args[i1]}" = "-p4rmrank" ] ; then
      (( i1++ ))
      p4rank=${args[i1]}
   fi
done
if [ "${p4rank}" = "0" ] ; then
   set -- ${args[@]}
fi

cd ${WORKINGDIR}

@@{USEENVIRONMENT}
@@{ENVIRONMENT}

TIMEPATH=
for timePath in /bin/time /usr/bin/time /usr/local/bin/time ; do
   if [ -x ${timePath} ] ; then
      TIMEPATH=${timePath}
      break
   fi
done

rankExtension=`printf "%06d" ${p4rank}`
TIMEPATH=
if [ -n "@@{TIMEPATHS}" ] ; then
   for timePath in @@{TIMEPATHS} ; do
      if [ -x ${timePath} ] ; then
         TIMEPATH=${timePath}
         break
      fi
   done
fi

if [ -n "${TIMEPATH}" ] ; then
   if [ "${p4rank}" = "0" ] ; then
      ${TIMEPATH} --format "Command exited with status %x\nreal %e\nuser %U\nsys %S" -o @@{TIME_RESULTS}-${rankExtension} \
         @@{EXECUTABLE} @@{ARGUMENTS} "$@" < @@{STDIN}
   else
      ${TIMEPATH} --format "Command exited with status %x\nreal %e\nuser %U\nsys %S" -o @@{TIME_RESULTS}-${rankExtension} \
         @@{EXECUTABLE} "$@" < @@{STDIN}
   fi
else
   if [ "${p4rank}" = "0" ] ; then
      { time -p @@{EXECUTABLE} @@{ARGUMENTS} \"$@\" < @@{STDIN} ; } \
                    > @@{TIME_RESULTS}-${rankExtension} 2>&1
   else
      { time -p @@{EXECUTABLE} \"$@\" < @@{STDIN} ; } \
                    > @@{TIME_RESULTS}-${rankExtension} 2>&1
   fi
   echo "Command exited with status $?" >> @@{TIME_RESULTS}-${rankExtension}
fi
