#!/usr/bin/env bash
set -euo pipefail

if [[ $# -lt 4 ]]; then
  echo "Usage: $0 PARAM_A \"a1 a2\" PARAM_B \"b1 b2\"" >&2
  exit 1
fi

param_a="$1"
vals_a="$2"
param_b="$3"
vals_b="$4"

env_file="${ENV_FILE:-/root/tipsharks/.env}"
results="${RESULTS:-/tmp/elo_sweep_${param_a}_${param_b}.txt}"
from_date="${FROM_DATE:-2000-01-01}"
to_date="${TO_DATE:-2100-01-01}"

echo "" >"$results"

read -r -a values_a <<<"$vals_a"
read -r -a values_b <<<"$vals_b"

for a in "${values_a[@]}"; do
  for b in "${values_b[@]}"; do
    perl -pi -e "s/^${param_a}=.*/${param_a}=${a}/" "$env_file"
    perl -pi -e "s/^${param_b}=.*/${param_b}=${b}/" "$env_file"
    echo "${param_a}=${a} ${param_b}=${b}" | tee -a "$results"
    docker compose run --rm worker python -m apps.backend.worker.cli recompute --from "$from_date" --to "$to_date" >/tmp/elo_recompute.log
    docker compose run --rm \
      -e DATABASE_URL=postgresql+psycopg://tipsharks:tipsharks@db:5432/tipsharks \
      -e PYTHONPATH=/app \
      worker python scripts/evaluate_accuracy.py | tee -a "$results"
    echo "---" >>"$results"
    echo "" >>"$results"
  done
done
