#!/usr/bin/env bash
# One-shot Pi install after copying a USB tree → /home/topbox/EtherGold/
#
# Field USB must be Production Staging (prod/ + sync/).
# To Deploy (/dev) is bench-only: if prod/ is missing, build_prod.sh from /dev is
# allowed on a workbench Pi — never as a field publish path.
#
# Thumb-drive copies from Windows may have CRLF/BOM — strip before anything else.
if grep -q $'\r' "${BASH_SOURCE[0]}" 2>/dev/null || head -c3 "${BASH_SOURCE[0]}" | grep -q $'^\xEF\xBB\xBF'; then
  sed -i '1s/^\xEF\xBB\xBF//' "${BASH_SOURCE[0]}"
  sed -i 's/\r$//' "${BASH_SOURCE[0]}"
  exec bash "${BASH_SOURCE[0]}" "$@"
fi
find "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -type f \( -name '*.sh' -o -name '*.py' -o -name '*.rclone-filter' \) -exec sed -i 's/\r$//' {} + 2>/dev/null || true
find "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -type f -name '*.sh' -exec sed -i '1s/^\xEF\xBB\xBF//' {} + 2>/dev/null || true
set -euo pipefail

ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
DEV="${ROOT}/dev"
PROD="${ROOT}/prod"
SYNC="${ROOT}/sync"
ADAPTER_LABEL="${PI_LABEL:-$(hostname -s)}"

if [[ -f "${PROD}/pog422_core.py" ]]; then
  echo "Using prebuilt prod/ (Production Staging)"
elif [[ -f "${DEV}/build_prod.sh" ]]; then
  echo "WARN: /dev tree on USB — building prod locally (bench only, not field publish)"
  bash "${DEV}/build_prod.sh"
else
  echo "FATAL: need EtherGold/prod (Production Staging) or EtherGold/dev/build_prod.sh" >&2
  exit 1
fi

echo "=== install_field (adapter=${ADAPTER_LABEL}) ==="
if [[ -f "${SYNC}/pi_normalize.sh" ]]; then
  bash "${SYNC}/pi_normalize.sh"
fi

touch "${ROOT}/progressives.csv" 2>/dev/null || true
sudo chown "${USER:-topbox}:${USER:-topbox}" "${ROOT}/progressives.csv" 2>/dev/null || true
sudo chmod 644 "${ROOT}/progressives.csv" 2>/dev/null || true

echo "=== install ethergold.service (role=topbox default) ==="
sudo env PI_LABEL="${ADAPTER_LABEL}" FIXTURE_POS="${FIXTURE_POS:-1}" \
  bash "${PROD}/install_prod_service.sh"

echo ""
echo "OK. Check: systemctl status ethergold"
echo "Logs:     journalctl -u ethergold -f"
echo ""
echo "First boot / driver refresh (once per Pi):"
echo "  sudo bash ${PROD}/commission_prod_boot.sh"
echo "  # or: sudo env ETHERGOLD_ROLE=listen bash ${PROD}/commission_prod_boot.sh"
echo "  # or: sudo env ETHERGOLD_ROLE=edge EDGE_ROLE=peer-a EDGE_UPLINK=eth0 bash ${PROD}/commission_prod_boot.sh"
