#!/usr/bin/env bash
# Start production supervisor + v16g prod bridge on this Pi (long-run, errors-only).
#
# Usage (one Pi):
#   FIXTURE_POS=3 bash switch_prod_bridge.sh
#
# From PC: orchestrate_fixture.ps1 -Action start-prod
#
# When fixture-prod.service is enabled (field commissioning), uses systemd instead
# of a duplicate nohup supervisor.

if grep -q $'\r' "${BASH_SOURCE[0]}" 2>/dev/null; then
  sed -i 's/\r$//' "${BASH_SOURCE[0]}"
  exec bash "${BASH_SOURCE[0]}" "$@"
fi

set -euo pipefail

SYNC="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# shellcheck source=ethergold_paths.sh
source "${SYNC}/ethergold_paths.sh"
PROD="${ETHERGOLD_DAEMON}"
BRIDGE="${ETHERGOLD_BRIDGE}"
POS="${FIXTURE_POS:-}"
UNIT="fixture-prod.service"

if [[ -z "${POS}" ]] || ! [[ "${POS}" =~ ^[1-4]$ ]]; then
  echo "FATAL: FIXTURE_POS=1..4 required" >&2
  exit 1
fi

stop_nohup_workers() {
  for pattern in fixture_supervisor fixture_link_watch pog422_fixture_bridge pog422_fixture_listen; do
    pkill -TERM -f "${pattern}" 2>/dev/null || true
  done
  sleep 1
  for pattern in fixture_supervisor fixture_link_watch pog422_fixture_bridge pog422_fixture_listen; do
    pkill -KILL -f "${pattern}" 2>/dev/null || true
  done
  rm -f "${BRIDGE}/.bridge.pid"
}

sudo mkdir -p /var/lib/fixture-prod
sudo rm -f /var/lib/fixture-prod/disabled
mkdir -p "${ETHERGOLD_LOGS}"

# Natural gameplay in production — strip persisted lab forcing from env file.
bash "${SYNC}/enable_lab_keno_jpot_env.sh" --off 2>/dev/null || true
bash "${SYNC}/enable_lab_poker_royal_env.sh" --off 2>/dev/null || true
bash "${SYNC}/enable_lab_spinjack_flushjack_env.sh" --off 2>/dev/null || true
bash "${SYNC}/enable_lab_touch6_jpot_env.sh" --off 2>/dev/null || true

export FIXTURE_PROD_ERRORS_MAX_BYTES="${FIXTURE_PROD_ERRORS_MAX_BYTES:-10240}"
export FIXTURE_PROD_LOG_MAX_AGE_S="${FIXTURE_PROD_LOG_MAX_AGE_S:-86400}"
export FIXTURE_PROD_SUPERVISOR_LOG_MAX_BYTES="${FIXTURE_PROD_SUPERVISOR_LOG_MAX_BYTES:-10240}"
SUP_LOG="${ETHERGOLD_LOGS}/supervisor.log"

if systemctl is-enabled "${UNIT}" >/dev/null 2>&1; then
  echo "=== restart ${UNIT} (systemd commissioned) pos=${POS} ==="
  stop_nohup_workers
  sudo systemctl restart "${UNIT}"
  sleep 8
  systemctl is-active "${UNIT}" || true
else
  stop_nohup_workers
  echo "=== start jun11-prod supervisor (nohup trial) pos=${POS} ==="
  nohup python3 "${PROD}/fixture_supervisor.py" \
    --fixture-pos "${POS}" \
    --log "${SUP_LOG}" \
    >> "${SUP_LOG}" 2>&1 &
  sleep 8
fi

echo "supervisor pid=$(pgrep -f "fixture_supervisor.py --fixture-pos ${POS}" || echo none)"
pgrep -af pog422_fixture_bridge || echo "bridge not up yet"
if [[ -f "${ETHERGOLD_LOGS}/errors.jsonl" ]]; then
  echo "errors.jsonl lines=$(wc -l < "${ETHERGOLD_LOGS}/errors.jsonl")"
  tail -n 2 "${ETHERGOLD_LOGS}/errors.jsonl" || true
fi
