#!/usr/bin/env bash
# Overlay Staging prod/ → ~/EtherGold/dev without --delete (keep local-only lab files).
# Called from promote_staging.sh when OTA_CHANNEL=dev.
#
#   bash apply_dev_overlay.sh

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

if [[ "$(id -un)" == root ]]; then
  echo "FATAL: do not run as root/sudo." >&2
  exit 1
fi

ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# shellcheck source=ethergold_paths.sh
source "${ROOT}/ethergold_paths.sh"

if [[ ! -d "${ETHERGOLD_STAGING}/prod" ]]; then
  echo "FATAL: missing ${ETHERGOLD_STAGING}/prod" >&2
  exit 1
fi
if [[ ! -d "${ETHERGOLD_DEV}" ]]; then
  echo "FATAL: missing tip ${ETHERGOLD_DEV}" >&2
  exit 1
fi

echo "=== apply_dev_overlay (no --delete) ==="
echo "from: ${ETHERGOLD_STAGING}/prod/"
echo "to:   ${ETHERGOLD_DEV}/"

rsync -a \
  --exclude __pycache__/ --exclude '*.pyc' \
  --exclude logs/ --exclude data/ --exclude run/ \
  --exclude rclone.env --exclude '*.env' \
  --exclude progressives.csv --exclude current-game.json \
  --exclude pog422_uartd --exclude pog422_inject \
  "${ETHERGOLD_STAGING}/prod/" "${ETHERGOLD_DEV}/"

if [[ -f "${ETHERGOLD_STAGING}/VERSION.txt" ]]; then
  cp -a "${ETHERGOLD_STAGING}/VERSION.txt" "${ETHERGOLD_DEV}/VERSION.txt"
fi

mkdir -p "${ETHERGOLD_ROOT}/run"
{
  echo "overlay_at=$(date -Is)"
  echo "staging_version=$(tr -d '\r\n' < "${ETHERGOLD_STAGING}/VERSION.txt" 2>/dev/null || true)"
  echo "dev_version=$(tr -d '\r\n' < "${ETHERGOLD_DEV}/VERSION.txt" 2>/dev/null || true)"
} > "${ETHERGOLD_ROOT}/run/last-dev-overlay.txt"

echo "apply_dev_overlay ok  tip=$(tr -d '\r\n' < "${ETHERGOLD_DEV}/VERSION.txt" 2>/dev/null || echo '?')"
