#!/bin/sh
# Runs Dart -> Swift -> Kotlin for every zone, each process with TZ=<zone>.
# Usage: run_all.sh <root>   (expects out/scenarios.json; writes out/*.json, out/times.tsv)
R="$1"; cd "$R" || exit 1
ZONES=$(python3 -c "import json;print(' '.join(json.load(open('out/scenarios.json'))['zones']))")
one() {
  z="$1"; f=$(echo "$z" | tr '/' '_')
  /usr/bin/time -p env TZ="$z" ./dart/harness out/scenarios.json out/dart_$f.json 2> out/time_dart_$f.txt >/dev/null
  /usr/bin/time -p env TZ="$z" ./swift/rotation out/dart_$f.json out/swift_$f.json 2> out/time_swift_$f.txt >/dev/null
  /usr/bin/time -p env TZ="$z" java -cp kotlin/rotation.jar:kotlin/json-20180813.jar RotationKt out/dart_$f.json out/kotlin_$f.json 2> out/time_kotlin_$f.txt >/dev/null
  echo "done $z"
}
export -f one 2>/dev/null
for z in $ZONES; do one "$z" & while [ "$(jobs -r | wc -l)" -ge 5 ]; do sleep 1; done; done
wait
