#!/usr/bin/env bash
# Install / enable desk persistent units · needs sudo
# Law: public site = WP.com Atomic only · local apps bind 127.0.0.1
# Full system: BGS+BGF+TX/RX+atoms · bgs-bgf-full.timer repeats
set -euo pipefail
HERE="$(cd "$(dirname "$(readlink -f "$0" 2>/dev/null || echo "$0")")" && pwd)"
ROOT="$(cd "$HERE/.." && pwd)"
XROOT="$(cd "$ROOT/.." && pwd)"

if [[ "$(id -u)" -ne 0 ]]; then
  echo "re-exec with sudo…" >&2
  export SUDO_ASKPASS="${SUDO_ASKPASS:-/home/default/Desktop/biggrinrtx-magazine/bin/askpass-mememe}"
  exec sudo -A "$0" "$@"
fi

echo "=== DESK SERVICES · install ==="
echo "HERE=$HERE"

chmod +x \
  "$HERE/bgrtx-datacenter-serve" \
  "$HERE/grok-orphan-kill.sh" \
  "$HERE/desk-clean" \
  "$XROOT/Build/cover.sh" 2>/dev/null || true

mkdir -p \
  "$ROOT/datacenter/spv" \
  /home/default/.local/state \
  "$XROOT/out"

# bin wrappers (stable /usr/local paths) · cover stays in-tree
install -m 755 "$HERE/bgrtx-datacenter-serve" /usr/local/bin/bgrtx-datacenter-serve
install -m 755 "$HERE/grok-orphan-kill.sh" /usr/local/bin/grok-orphan-kill
[[ -f "$HERE/desk-clean" ]] && install -m 755 "$HERE/desk-clean" /usr/local/bin/desk-clean

# unmask first if masked → /dev/null (policy was local-only; still 127.0.0.1)
if [[ -L /etc/systemd/system/bgrtx-datacenter.service ]] && \
   [[ "$(readlink /etc/systemd/system/bgrtx-datacenter.service 2>/dev/null || true)" == /dev/null ]]; then
  echo "unmask bgrtx-datacenter.service"
  systemctl unmask bgrtx-datacenter.service || rm -f /etc/systemd/system/bgrtx-datacenter.service
fi

# units
install -m 644 "$HERE/bgrtx-datacenter.service" /etc/systemd/system/bgrtx-datacenter.service
install -m 644 "$HERE/grok-orphan-kill.service" /etc/systemd/system/grok-orphan-kill.service
install -m 644 "$HERE/grok-orphan-kill.timer" /etc/systemd/system/grok-orphan-kill.timer
install -m 644 "$HERE/bgf-reinstant.service" /etc/systemd/system/bgf-reinstant.service
install -m 644 "$HERE/bgf-reinstant.timer" /etc/systemd/system/bgf-reinstant.timer
install -m 644 "$HERE/bgs-bgf-full.service" /etc/systemd/system/bgs-bgf-full.service
install -m 644 "$HERE/bgs-bgf-full.timer" /etc/systemd/system/bgs-bgf-full.timer
install -m 644 "$HERE/bgs-bgf-always.service" /etc/systemd/system/bgs-bgf-always.service

# point datacenter ExecStart at tree (source of truth)
sed -i "s|ExecStart=.*bgrtx-datacenter-serve|ExecStart=$HERE/bgrtx-datacenter-serve|" \
  /etc/systemd/system/bgrtx-datacenter.service

systemctl daemon-reload

systemctl enable bgrtx-datacenter.service
systemctl enable grok-orphan-kill.timer
systemctl enable bgs-bgf-always.service
# ALWAYS COOK owns the loop · disable periodic timers (zero flat via always service)
systemctl disable --now bgs-bgf-full.timer 2>/dev/null || true
systemctl disable --now bgf-reinstant.timer 2>/dev/null || true

systemctl restart grok-orphan-kill.timer || systemctl start grok-orphan-kill.timer
systemctl restart bgs-bgf-always.service || systemctl start bgs-bgf-always.service
systemctl restart bgrtx-datacenter.service || systemctl start bgrtx-datacenter.service

sleep 1.2
echo ""
echo "=== STATUS ==="
systemctl --no-pager --full status bgrtx-datacenter.service 2>&1 | head -14
echo "---"
systemctl --no-pager --full status grok-orphan-kill.timer 2>&1 | head -8
echo "---"
systemctl --no-pager --full status bgs-bgf-always.service 2>&1 | head -18
echo "---"
curl -sS -o /dev/null -w "Datacenter HTTP %{http_code}  http://127.0.0.1:8766/\n" http://127.0.0.1:8766/ || true
ls -la /home/default/Desktop/x/out/ALWAYS_COOKING /home/default/Desktop/x/out/always_live.json 2>/dev/null || true
echo ""
echo "OK · ALWAYS COOK · zero flat:"
echo "  bgs-bgf-always.service    → cover.sh always · Restart=always"
echo "  bgrtx-datacenter.service  → 127.0.0.1:8766"
echo "  grok-orphan-kill.timer    → every 2 min"
echo "  files hot: out/ALWAYS_COOKING · always_live.json · bgs_bgf_full.json · …"
echo "  CLI: ./Build/cover.sh always | pulse | full"
echo "  public site stays WP.com Atomic · biggrinrtx.com"
