#!/bin/bash
# setup.sh — 由零開始一鍵 setup：系統套件 → venv＋playwright → 目錄 → 範例設定 → 起服務。
# 跑：bash setup.sh（第一次建議用 bootstrap.sh，會先驗 sha256 再跑呢個）
set -euo pipefail
HERE="$(cd "$(dirname "$0")" && pwd)"
[ -f "$HERE/env.sh" ] || cp "$HERE/env.sh.example" "$HERE/env.sh"
. "$HERE/env.sh"
ARENA_HOME="${ARENA_HOME:-$HOME/workspace/arena-system}"
VENV="${VENV:-$ARENA_HOME/venv}"
mkdir -p "$ARENA_HOME/logs" "$ARENA_HOME/run" "$ARENA_HOME/local-profiles" "$ARENA_HOME/scripts"
touch "$ARENA_HOME/logs/.keep"   # 新機第一步先建 logs：原版 watcher log() 唔會自建 → 第一個 log 會 FileNotFoundError

echo "=== 1. 系統套件（tigervnc / xdotool / imagemagick ＋ playwright 依賴）==="
# VERSIONS.txt 若鎖版而 apt 有貨就照鎖；冇就裝當前版並顯示實際版本（可重現）
TV_PIN="1.13.1+dfsg-2build2"
if apt-cache policy "tigervnc-standalone-server=$TV_PIN" 2>/dev/null | grep -q "$TV_PIN"; then
  sudo apt-get install -y "tigervnc-standalone-server=$TV_PIN"
else
  sudo apt-get install -y tigervnc-standalone-server
fi
which xdotool >/dev/null 2>&1 || sudo apt-get install -y xdotool
which import  >/dev/null 2>&1 || sudo apt-get install -y imagemagick
# 乾淨 VM 必備（A8/8609②）：冇 python3-venv／python3-pip 時，下一步 `python3 -m venv` 會直接死
python3 -c "import venv, ensurepip" >/dev/null 2>&1 || sudo apt-get install -y python3-venv python3-pip

echo "=== 2. Python venv ＋ requirements（== 鎖死）==="
if [ ! -x "$VENV/bin/python" ]; then python3 -m venv "$VENV"; fi
"$VENV/bin/pip" install -q -r "$HERE/requirements.txt"
echo "=== 3. Playwright chromium（--with-deps 會自己帶系統依賴；失敗時退一步）==="
"$VENV/bin/python" -m playwright install --with-deps chromium || \
  { "$VENV/bin/python" -m playwright install chromium; echo "⚠️ --with-deps 失敗，已改裝純 chromium；如啟動報缺 lib，跑：sudo $VENV/bin/python -m playwright install-deps chromium"; }

echo "=== 4. 放置 watcher.py 去標準位置（verify／start-watcher 都讀呢個）==="
install -m 0644 "$HERE/scripts/watcher.py" "$ARENA_HOME/scripts/watcher.py"
echo "=== 5. 設定範例（唔覆蓋已存在嘅真設定）==="
[ -f "$ARENA_HOME/seats.conf" ]   || cp "$HERE/seats.conf.example" "$ARENA_HOME/seats.conf"
[ -f "$VPN_DIR/vpn-proxies.conf" ] || { mkdir -p "$VPN_DIR"; cp "$HERE/vpn-proxies.conf.example" "$VPN_DIR/vpn-proxies.conf"; }   # watcher 讀死 ~/workspace/vpn-tunnel/（唔喺 arena-system 下面）
[ -f "$HERE/env.sh" ] || cp "$HERE/env.sh.example" "$HERE/env.sh"

echo "=== 6. 自檢（唔靠人眼）==="
"$VENV/bin/python" -c "import playwright,sys;print('playwright OK',playwright.__version__ if hasattr(playwright,'__version__') else '')" 2>/dev/null || true
md5sum "$ARENA_HOME/scripts/watcher.py"
echo "=== 7. 起服務（Xvnc → websockify → tunnel → keep → watchers）==="
bash "$HERE/start-all.sh"
bash "$HERE/start-watcher.sh" || true
echo ""
echo "=== Setup 完成。下一步：用 VNC 人手登入一次（之後 profile 記住登入）==="
echo "VNC: http://${SERVER_HOST}:${SERVER_WEB_PORT}/vnc.html?autoconnect=true&path=$VNC_PATH"
