#!/bin/bash
# ============================================================================
#  deploy-homepage.sh —— 部署 Homepage 大屏（含本机指标适配层）
#   1) 装 homelab-metrics.py（:8787 扁平 JSON）+ systemd 单元
#   2) 建 /home/zyw/homepage/config 并写入 settings/widgets/services/bookmarks
#   3) docker 起 Homepage（:3000，host 网络，TZ=Asia/Shanghai）
#   4) 把大屏 kiosk 指到 Homepage
# ============================================================================
set -u
PW='yueling408'
SUDO() { printf '%s\n' "$PW" | sudo -S -p '' "$@"; }
CFG="$HOME/homepage/config"
export DEBIAN_FRONTEND=noninteractive

echo "== 1/4 指标适配层 =="
SUDO install -m 0755 /tmp/homelab-metrics.py /usr/local/bin/homelab-metrics.py
# 注意：不能用 `SUDO tee <<'EOF'` —— SUDO() 用管道喂密码，会把 heredoc 内容吃掉（写进去的是密码）
SUDO install -m 0644 /tmp/homelab-metrics.service /etc/systemd/system/homelab-metrics.service
SUDO systemctl daemon-reload
SUDO systemctl enable --now homelab-metrics >/dev/null 2>&1
sleep 2
echo -n "  自检 /metrics: "; curl -s --noproxy '*' http://127.0.0.1:8787/metrics | head -c 260; echo

echo "== 2/4 写 Homepage 配置 =="
mkdir -p "$CFG"
install -m 0644 /tmp/homepage-settings.yaml  "$CFG/settings.yaml"
install -m 0644 /tmp/homepage-widgets.yaml   "$CFG/widgets.yaml"
install -m 0644 /tmp/homepage-services.yaml  "$CFG/services.yaml"
install -m 0644 /tmp/homepage-bookmarks.yaml "$CFG/bookmarks.yaml"
ls -1 "$CFG"

echo "== 3/4 起 Homepage 容器 =="
cd "$HOME/homepage"
cat > compose.yaml <<'EOF'
services:
  homepage:
    image: ghcr.io/gethomepage/homepage:latest
    container_name: homepage
    network_mode: host
    environment:
      TZ: Asia/Shanghai
      HOMEPAGE_ALLOWED_HOSTS: "192.168.31.31:3000,127.0.0.1:3000,localhost:3000"
    volumes:
      - ./config:/app/config
    restart: unless-stopped
EOF
if docker compose version >/dev/null 2>&1; then
    SUDO docker compose up -d 2>&1 | tail -6
else
    SUDO docker rm -f homepage >/dev/null 2>&1
    SUDO docker run -d --name homepage --network host \
         -e TZ=Asia/Shanghai \
         -e HOMEPAGE_ALLOWED_HOSTS="192.168.31.31:3000,127.0.0.1:3000,localhost:3000" \
         -v "$CFG:/app/config" --restart unless-stopped \
         ghcr.io/gethomepage/homepage:latest 2>&1 | tail -3
fi
for i in $(seq 1 30); do
    code=$(curl -s --noproxy '*' -o /dev/null -w '%{http_code}' http://127.0.0.1:3000 2>/dev/null)
    [ "$code" = "200" ] && break
    sleep 3
done
echo "  Homepage :3000 -> ${code:-无响应}"
echo "  容器状态: $(SUDO docker ps --filter name=homepage --format '{{.Status}}' 2>/dev/null)"

echo "== 4/4 大屏指向 Homepage =="
echo "http://127.0.0.1:3000" > "$HOME/.kiosk-url"
pkill -x cage 2>/dev/null; pkill -x qutebrowser 2>/dev/null
SUDO systemctl restart getty@tty1
echo "  已把 ~/.kiosk-url 设为 $(cat "$HOME/.kiosk-url")，kiosk 正在重启"
