#!/bin/bash
set -euo pipefail

ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
SITE_LIST="${SITE_LIST:-$ROOT_DIR/sites.csv}"
RUNS_DIR="$ROOT_DIR/.smbatcher/runs"
PYTHON_BIN="${PYTHON_BIN:-python3.12}"

export ROOT_DIR

mkdir -p "$RUNS_DIR"

start_epoch=$(date +%s)

if [ -d "$ROOT_DIR/.venv" ]; then
  source "$ROOT_DIR/.venv/bin/activate"
fi

if [ ! -f "$SITE_LIST" ]; then
  echo "Site list not found at $SITE_LIST. Please provide one." >&2
  exit 1
fi

# Generate sites string (lenient CSV) and limit to first 5 entries
SITES_RAW="$("$ROOT_DIR/tools/check/site-list.sh" "$SITE_LIST")"
if [ -z "$SITES_RAW" ]; then
  echo "No valid sites parsed from $SITE_LIST" >&2
  exit 1
fi
SITES_LIMITED="$(printf '%s' "$SITES_RAW" | "$PYTHON_BIN" "$ROOT_DIR/tools/shared/ci-dry-run-limit-sites.py")"

echo "[ci-dry-run] design..."
"$ROOT_DIR/tools/design/run.sh" --sites "$SITES_LIMITED" --batch-size 5

echo "[ci-dry-run] implement..."
# Use latest batch id from REGISTRY
BATCH_ID="$("$PYTHON_BIN" "$ROOT_DIR/tools/shared/ci-dry-run-batch-id.py")"
"$ROOT_DIR/tools/implement/run.sh" --batch "$BATCH_ID" --concurrency 2

end_epoch=$(date +%s)
duration=$((end_epoch - start_epoch))
echo "$duration" > "$RUNS_DIR/ci-dry-run-duration.log"
echo "[ci-dry-run] duration ${duration}s"

echo "[ci-dry-run] metrics..."
if ! "$ROOT_DIR/tools/shared/metrics.sh"; then
  echo "[ci-dry-run] metrics failed"
  exit 1
fi

echo "[ci-dry-run] complete"
