#!/bin/sh
#
#  Created by duus on 2007-03-28.
# 

_SCRIPTNAME=runlater
if [ "$1" = "version" ]
	then
	echo "$_SCRIPTNAME by duus"
	echo " runlater (secs) (command)  runs command in secs seconds"
	else
# --- normal script here ---
#
#
__sleepsecs=0
__minute=0
__test=0
__silent=0
__count=0

if [ $__test -eq 0 ]
	then
	# standard version
	if [ "$1" = "" -o "$1" = "h" -o "$1" = "help" ]
	        then
	        echo "runlater v 1.0             (duus)"
	        echo "runlater a b c d           "
	        echo "runs b c d in a seconds    "
		    echo " <count> a b : count down a secs in b timeintervals"
			echo " <silent> : suppress output "
			echo " <query> : list all runlatered processes"
			echo " <mins> x : sleep x mins"
			echo " <kill> : kill all runlatered processes"
			echo " "
			exit 1;
	        else
			if [ "$1" = "c" -o "$1" = "count"  ]
				then
				__count=1
				shift
				else
				if [ "$1" = "s" -o "$1" = "q" -o "$1" = "silent" -o "$1" = "quiet"  ]
					then
					__silent=1
					shift
				fi
					
				_mins=0
				if [ "$1" = "m" -o "$1" = "mins"  ]
					then
					_mins=$2
					#echo "mins ${_mins}"
					shift; shift
				fi
					
					
				if [ "$1" = "q" -o "$1" = "query"  ]
					then
					ps -ax | grep runlater
					exit 1;
					shift
				fi
				
				if [ "$1" = "k" -o "$1" = "kill"  ]
					then
					killbyname runlater
					exit 1;
					shift
				fi
				
				if [  ${_mins} -gt 0 ] 
					then 
						_sleepsecs=`expr ${_mins} \* 60`
						#echo "mins in secs ${_sleepsecs}"
				else
						_sleepsecs=$1 
						shift
				fi
				
				if [  ${__silent} -eq 0 ]
					then
					echo "sleep for ${_sleepsecs} seconds, then run $1 $2 $3 $4 $5 $6"
		    	fi
				sleep ${_sleepsecs} ;

				#echo $*
	        	$* &
			fi
			if [ ${__count} -eq 1 ]
				then
				_stepsize=$2
				_sleepsecs=$1
				shift
				shift
				_steps=`expr ${_sleepsecs} / ${_stepsize} - ${_sleepsecs} % ${_stepsize}` 
				i=0
				while [ ${i} -lt ${_steps} ]
					do
					#echo `expr $i * ${_stepsize}`
					echo " > `expr ${_sleepsecs} - ${_sleepsecs} % ${_stepsize} - $i \* ${_stepsize}` secs until $*"
					sleep ${_stepsize}
					i=`expr $i + 1`
					done
				# run commands:
				$* &
			fi
	fi
	# end standard version
fi



if [ $__test -eq 1 ]
	then
	# experimental version
if [ "$1" = "" ]
	then
	echo "runlater v 1.0             "
	echo "runlater a b c d           "
	echo "runs b c d in a seconds    "
	else
	for arg in "$@"
		do
		echo "arg: $arg"
		_yes=`isint.sh $arg` 
		echo "yes: <$_yes>"
		if [ "$_yes" = "1" ]
			then
			let __sleepsecs+=$arg
			echo sleepsecs: $__sleepsecs
		elif [ "$arg" = "min" -o "$arg" = "m" ]
			then
			let __minute=1
			echo "minute: $_minute"
		fi
	done
	if [ $__minute -eq 1 ]
		then
		shift
		let __sleepsecs=`expr $__sleepsecs * 60`
	fi
	shift
	echo "sleep for $__sleepsecs seconds, then run $@"
	sleep $__sleepsecs
	$@
fi
  # end experimental version
fi
#
fi # end 'version'
