#!/usr/bin/env bash
set -u

SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
DEFAULT_IP_FILE="$SCRIPT_DIR/tv_ips.txt"
IP_FILE="${1:-$DEFAULT_IP_FILE}"
SDK_ROOT="${ANDROID_SDK_ROOT:-$HOME/Library/Android/sdk}"
ADB_BIN="${ADB_BIN:-$SDK_ROOT/platform-tools/adb}"
APP_PACKAGE="${APP_PACKAGE:-com.cpt.electronicmenu.tv}"
SYSTEM_HOME_PACKAGE="${SYSTEM_HOME_PACKAGE:-com.mitv.tvhome}"
SYSTEM_HOME_COMPONENT="${SYSTEM_HOME_COMPONENT:-$SYSTEM_HOME_PACKAGE/.MainActivityUserMode}"

if [[ ! -x "$ADB_BIN" ]]; then
  echo "adb 不可用：$ADB_BIN" >&2
  exit 1
fi
if [[ ! -f "$IP_FILE" ]]; then
  echo "IP 文件不存在：$IP_FILE" >&2
  echo "请创建 tv_ips.txt，一行一个电视 IP，例如：172.20.10.5" >&2
  exit 1
fi

TOTAL=0
OK=0
FAILED=0

while IFS= read -r RAW_IP || [[ -n "$RAW_IP" ]]; do
  IP="$(printf '%s' "$RAW_IP" | sed 's/[[:space:]]//g')"
  [[ -z "$IP" || "$IP" == \#* ]] && continue

  TOTAL=$((TOTAL + 1))
  SERIAL="$IP:5555"
  echo "==== $IP ===="

  "$ADB_BIN" connect "$SERIAL" || true
  STATE="$("$ADB_BIN" -s "$SERIAL" get-state 2>&1 || true)"
  if [[ "$STATE" == *"unauthorized"* ]]; then
    echo "失败：ADB 未授权，请在电视弹窗点允许后重跑。"
    FAILED=$((FAILED + 1))
    continue
  fi
  if [[ "$STATE" != "device" ]]; then
    echo "失败：电视不可用，当前状态：$STATE"
    FAILED=$((FAILED + 1))
    continue
  fi

  "$ADB_BIN" -s "$SERIAL" shell pm enable "$SYSTEM_HOME_PACKAGE" >/dev/null 2>&1 || true
  "$ADB_BIN" -s "$SERIAL" shell settings put system start_3rd_app "$APP_PACKAGE"
  VALUE="$("$ADB_BIN" -s "$SERIAL" shell settings get system start_3rd_app 2>/dev/null | tr -d '\r')"
  echo "start_3rd_app=$VALUE"

  "$ADB_BIN" -s "$SERIAL" shell am start -n "$SYSTEM_HOME_COMPONENT" >/dev/null 2>&1 || true

  if [[ "$VALUE" == "$APP_PACKAGE" ]]; then
    echo "成功：已写入红米电视系统自启配置。"
    OK=$((OK + 1))
  else
    echo "失败：回读值不一致。"
    FAILED=$((FAILED + 1))
  fi
done < "$IP_FILE"

echo "==== 汇总 ===="
echo "总数：$TOTAL"
echo "成功：$OK"
echo "失败：$FAILED"

if [[ "$FAILED" -gt 0 ]]; then
  exit 2
fi
