#!/usr/bin/env zsh

fail () {
  print -u 2 -- "$1"
  exit 1
}

zparseopts -D -E -a help logdir:=logdir -help h

if [[ -n $help ]]; then
  cat <<help
Options:
-h, --help:  show this help
-logdir <dir>:      Directory to store results in  (created if necessary)
                    A date-stamped directory is created in it. Required.
help
  exit 0
fi

[[ -z $logdir[2] ]] && fail "You must specify -logdir"
[[ -e $logdir[2] && ! -d $logdir[2] ]] && fail "$logdir[2] exists but isn't a directory"
logdir=$logdir[2]/psl-observer-run-data-$(date +%Y-%m-%d)
suffix=1
while [[ -e ${logdir} && -e ${logdir}-${suffix} ]] ; do # TODO: fix the expression here!
  suffix=$((suffix+1))
done
[[ -z $suffix ]] && logdir=${logdir}-
mkdir -p $logdir || fail "Could not make new directory $logdir"

pushd ${0:h}
driver=$PWD/test-driver.zsh
popd

for prop in {10,20,30,50,100} ; do
  for mod in {10,100,1000,2000,3000,5000,10000} ; do
    $driver -random 20 -modelsize $mod -formulasize $prop -timelimit 300 -logdir $logdir/property-${prop}-model-${mod} || fail "Test driver failed!"
  done
done