#!/bin/bash

PACKAGENAME="tt-help-cli-ycl"
CONFIG_PATH="$HOME/.tt-help.json"

echo "========================================"
echo "  tt-help-cli-ycl 一键启动脚本 (macOS)"
echo "========================================"

# ---------- 0. 根据本机 IP 自动选择 server ----------
LOCAL_IP=$(ifconfig | awk '/inet / && $2 != "127.0.0.1" { print $2; exit }')

echo "[提示] 本机 IP: ${LOCAL_IP:-未检测到}"

if [[ "$LOCAL_IP" =~ ^172\.18\.154\.[0-9]+$ ]]; then
  TARGET_SERVER="http://172.18.154.201:3001"
  echo "[提示] 检测到内网 IP: $LOCAL_IP，使用内网 server"
else
  TARGET_SERVER="http://117.71.53.99:17301"
  echo "[提示] 未检测到内网 IP，使用公网 server"
fi

# ---------- 1. 检查/安装最新版本 ----------
LATEST_VERSION=$(npm view "$PACKAGENAME" version 2>/dev/null)

if [ -z "$LATEST_VERSION" ]; then
  echo "[错误] 无法从 npm 获取最新版本信息"
  exit 1
fi

INSTALLED_VERSION=$(npm list -g "$PACKAGENAME" --depth=0 2>/dev/null | grep "$PACKAGENAME@" | head -1 | sed 's/.*@//' | sed 's/[) ].*//')

if [ -z "$INSTALLED_VERSION" ]; then
  echo "[提示] tt-help-cli-ycl 未安装，正在安装最新版本..."
  npm install -g "$PACKAGENAME"
  if [ $? -eq 0 ]; then
    echo "[OK] 安装完成: $LATEST_VERSION"
  else
    echo "[错误] 安装失败，请手动执行: npm install -g $PACKAGENAME"
    exit 1
  fi
elif [ "$INSTALLED_VERSION" = "$LATEST_VERSION" ]; then
  echo "[OK] tt-help-cli-ycl 已是最新版本: $LATEST_VERSION"
else
  echo "[提示] 当前版本: $INSTALLED_VERSION, 最新版本: $LATEST_VERSION"
  echo "[执行] 正在升级最新版本..."
  npm install -g "$PACKAGENAME" 2>/dev/null
  if [ $? -eq 0 ]; then
    echo "[OK] 安装完成: $LATEST_VERSION"
  else
    echo "[警告] 自动安装失败，尝试手动更新..."
    npm update -g "$PACKAGENAME"
  fi
fi

# ---------- 2. 检查/设置 server 配置 ----------
CURRENT_SERVER=""
if [ -f "$CONFIG_PATH" ]; then
  CURRENT_SERVER=$(node -e "try{const c=JSON.parse(require('fs').readFileSync('$CONFIG_PATH','utf-8'));console.log(c.server||'')}catch(e){}" 2>/dev/null)
fi

if [ "$CURRENT_SERVER" = "$TARGET_SERVER" ]; then
  echo "[OK] Server 配置正确: $TARGET_SERVER"
else
  echo "[提示] 当前 server: ${CURRENT_SERVER:-未设置}, 目标: $TARGET_SERVER"
  echo "[执行] 正在设置 server 配置..."
  node -e "
const fs = require('fs');
const path = require('path');
const configPath = path.join(require('os').homedir(), '.tt-help.json');
let cfg = {};
try { cfg = JSON.parse(fs.readFileSync(configPath, 'utf-8')); } catch(e) {}
cfg.server = '$TARGET_SERVER';
fs.writeFileSync(configPath, JSON.stringify(cfg, null, 2), 'utf-8');
console.log('  已写入: ' + configPath);
"
  echo "[OK] Server 配置已设置"
fi

# ---------- 3. 询问用户参数 ----------
echo ""
echo "========================================"
echo "  参数配置"
echo "========================================"

printf "起始端口 (--base-port) [默认: 9222]: "
read INPUT_BASE_PORT
BASE_PORT="${INPUT_BASE_PORT:-9222}"

printf "端口数量 (--port-count) [默认: 10]: "
read INPUT_PORT_COUNT
PORT_COUNT="${INPUT_PORT_COUNT:-10}"

printf "任务国家 (--job-locations) [默认: 无，使用全部]: "
read INPUT_JOB_LOCATIONS

# ---------- 4. 获取配置中的用户编号并拼接 ----------
CONFIG_USER_ID=""
if [ -f "$CONFIG_PATH" ]; then
  CONFIG_USER_ID=$(node -e "try{const c=JSON.parse(require('fs').readFileSync('$CONFIG_PATH','utf-8'));console.log(c.userId||'')}catch(e){}" 2>/dev/null)
fi
if [ -z "$CONFIG_USER_ID" ]; then
  CONFIG_USER_ID="user"
fi
USER_ID="${CONFIG_USER_ID}_${BASE_PORT}_${PORT_COUNT}"

echo ""
echo "========================================"
echo "  启动 tt-help explore"
echo "========================================"
echo "  用户编号: $USER_ID"
echo "  起始端口: $BASE_PORT"
echo "  端口数量: $PORT_COUNT"
if [ -n "$INPUT_JOB_LOCATIONS" ]; then echo "  任务国家: $INPUT_JOB_LOCATIONS"; fi
echo "  最大关注: 5"
echo "  最大粉丝: 5"
echo "  速度: stealth (最慢)"
echo "========================================"
JOB_LOC_ARGS=""
if [ -n "$INPUT_JOB_LOCATIONS" ]; then JOB_LOC_ARGS="--job-locations $INPUT_JOB_LOCATIONS"; fi
tt-help explore stealth --user-id "$USER_ID" --base-port "$BASE_PORT" --port-count "$PORT_COUNT" --max-following 5 --max-followers 5 $JOB_LOC_ARGS
