#!/usr/bin/env bash
# Install hot-tub temperature daemon on Raspberry Pi OS (run with sudo).
set -euo pipefail

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
REPO_ROOT="$(cd "${SCRIPT_DIR}/../.." && pwd)"
INSTALL_ROOT="${INSTALL_ROOT:-${REPO_ROOT}}"

if [[ "$(id -u)" -ne 0 ]]; then
  echo "Run as root: sudo $0" >&2
  exit 1
fi

echo "==> Installing packages (redis-server, python3-redis)..."
export DEBIAN_FRONTEND=noninteractive
apt-get update -qq
apt-get install -y -qq redis-server python3-redis

echo "==> Creating hot-tub system user..."
if ! id hot-tub &>/dev/null; then
  useradd --system --home /var/lib/hot-tub --shell /usr/sbin/nologin hot-tub
fi

echo "==> Installing tmpfiles, log directory, config paths..."
install -m 0644 "${SCRIPT_DIR}/hot-tub-temp.tmpfiles.conf" /etc/tmpfiles.d/hot-tub-temp.conf
systemd-tmpfiles --create /etc/tmpfiles.d/hot-tub-temp.conf
mkdir -p /var/log/hot-tub /etc/hot-tub /var/lib/hot-tub
chown hot-tub:hot-tub /var/log/hot-tub /var/lib/hot-tub

if [[ ! -f /etc/hot-tub/temp.json ]]; then
  install -m 0644 "${INSTALL_ROOT}/src/temp/config.example.json" /etc/hot-tub/temp.json
  echo "    Created /etc/hot-tub/temp.json from example"
else
  echo "    Keeping existing /etc/hot-tub/temp.json"
fi

chown -R hot-tub:hot-tub "${INSTALL_ROOT}/src/temp" 2>/dev/null || true

echo "==> Installing systemd unit..."
sed "s|__INSTALL_ROOT__|${INSTALL_ROOT}|g" "${SCRIPT_DIR}/hot-tub-temps.service" \
  > /etc/systemd/system/hot-tub-temps.service

echo "==> Installing logrotate..."
install -m 0644 "${SCRIPT_DIR}/hot-tub-temp.logrotate" /etc/logrotate.d/hot-tub-temp

echo "==> Enabling redis and hot-tub-temps..."
systemctl enable redis-server 2>/dev/null || systemctl enable redis 2>/dev/null || true
systemctl start redis-server 2>/dev/null || systemctl start redis 2>/dev/null || true
systemctl daemon-reload
systemctl enable hot-tub-temps.service
systemctl restart hot-tub-temps.service || systemctl start hot-tub-temps.service

echo ""
echo "Installation complete."
echo "  Repo / code root: ${INSTALL_ROOT}"
echo "  Config:           /etc/hot-tub/temp.json"
echo "  Probe map:        /etc/hot-tub/temp-probes.json (created during teach-in)"
echo "  Log:              /var/log/hot-tub/temp.log"
echo ""
echo "1-Wire: ensure boot config contains:  dtoverlay=w1-gpio"
echo "  (Raspberry Pi OS: /boot/firmware/config.txt or /boot/config.txt)"
echo "  Reboot after enabling, then verify: ls /sys/bus/w1/devices/28-*"
echo ""
echo "Status:  systemctl status hot-tub-temps"
echo "Logs:    tail -f /var/log/hot-tub/temp.log"
echo "Redis:   redis-cli GET temps:latest"
