#!/bin/bash

# memory limit per process.
# passed to bash's ulimit -v, so specified in kibi.
memlimit="$((1024*1024))"

# in seconds
timelimit=60

batch_fn="$1"

log() {
    echo "[$(date +"%F %X")]" "$@"
}

tmpfn="$(mktemp --suffix=.out)"
echo "[$(date +"%F %X")] Executing:" ulimit -v $memlimit\; timeout $timelimit sh ./igor2 -b "${batch_fn}" \> "$tmpfn"
(   ulimit -v "$memlimit"
    timeout "$timelimit" \
    sh ./igor2 -b "$batch_fn" > "$tmpfn" 2>&1 )
rv=$?

case $rv in
    0)
        output_fn="$(dirname "$batch_fn")/$(basename "$batch_fn" .bat).out"
        log '!!!' Unexpected success: "$batch_fn" / "$output_fn"
        mv -v "$tmpfn" "$output_fn"
        ;;
    124)
        log Timeout: "$batch_fn"
        rm "$tmpfn"
        ;;
    *)
        log Memory limit hit \(or other error\): "$batch_fn"
        rm "$tmpfn"
        ;;
esac
