#!/usr/bin/env bash
# AI Terminal daemon installer (macOS / Linux / WSL)
# 用法: curl -fsSL https://ai-terminal.cn/i | sh
# 或:  curl -fsSL https://ai-terminal.org/install.sh | sh
#
# 当前阶段: 通过 npm 安装 (临时, 等二进制分发上线后切换)
# 未来阶段: 下载预编译二进制 → ~/.local/bin/termctl

set -e

YELLOW='\033[1;33m'
GREEN='\033[0;32m'
RED='\033[0;31m'
BLUE='\033[0;34m'
NC='\033[0m'

echo -e "${BLUE}╔══════════════════════════════════════╗${NC}"
echo -e "${BLUE}║      AI Terminal Installer           ║${NC}"
echo -e "${BLUE}╚══════════════════════════════════════╝${NC}"
echo ""

# 1. 检测系统
OS="unknown"
case "$(uname -s)" in
  Linux*)
    if grep -qi microsoft /proc/version 2>/dev/null; then
      OS="wsl"
      echo -e "${GREEN}✓${NC} 检测到 WSL2 环境"
    else
      OS="linux"
      echo -e "${GREEN}✓${NC} 检测到 Linux"
    fi
    ;;
  Darwin*)
    OS="macos"
    echo -e "${GREEN}✓${NC} 检测到 macOS"
    ;;
  *)
    echo -e "${RED}✗${NC} 不支持的系统: $(uname -s)"
    echo -e "  Windows 用户请用 PowerShell 运行: ${BLUE}iwr -useb ai-terminal.cn/i.ps1 | iex${NC}"
    exit 1
    ;;
esac

# 2. 检测 Node.js
if ! command -v node >/dev/null 2>&1; then
  echo -e "${RED}✗${NC} 没有检测到 Node.js"
  case $OS in
    macos)
      echo -e "  ${YELLOW}请先安装 Node.js:${NC}"
      echo -e "  ${BLUE}brew install node${NC}"
      echo -e "  或访问 https://nodejs.org 下载"
      ;;
    linux|wsl)
      echo -e "  ${YELLOW}请先安装 Node.js 18+:${NC}"
      echo -e "  Ubuntu/Debian: ${BLUE}curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash - && sudo apt install -y nodejs${NC}"
      echo -e "  CentOS/RHEL:   ${BLUE}sudo dnf install -y nodejs npm${NC}"
      echo -e "  或用 nvm:      ${BLUE}curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bash${NC}"
      ;;
  esac
  exit 1
fi

NODE_VERSION=$(node -v | sed 's/v//')
NODE_MAJOR=$(echo "$NODE_VERSION" | cut -d. -f1)
if [ "$NODE_MAJOR" -lt 18 ]; then
  echo -e "${RED}✗${NC} Node.js 版本过低: v$NODE_VERSION (需要 18+)"
  exit 1
fi
echo -e "${GREEN}✓${NC} Node.js v$NODE_VERSION"

# 3. 检测 tmux (仅 Linux/macOS, WSL 也需要)
if ! command -v tmux >/dev/null 2>&1; then
  echo -e "${YELLOW}!${NC} 没有检测到 tmux, AI Terminal 需要 tmux 支持"
  case $OS in
    macos)
      echo -e "  ${BLUE}brew install tmux${NC}"
      ;;
    linux|wsl)
      echo -e "  Ubuntu/Debian: ${BLUE}sudo apt install -y tmux${NC}"
      echo -e "  CentOS/RHEL:   ${BLUE}sudo dnf install -y tmux${NC}"
      ;;
  esac
  read -p "继续安装 daemon? (装好 tmux 后再运行) (y/N) " -n 1 -r
  echo
  [[ ! $REPLY =~ ^[Yy]$ ]] && exit 1
fi

# 4. 通过 npm 安装 daemon (临时方案, 二进制分发上线后切换)
echo ""
echo -e "${BLUE}→${NC} 正在从 npm 安装 termctl..."
if npm install -g termctl 2>&1; then
  echo -e "${GREEN}✓${NC} 安装完成"
else
  echo -e "${RED}✗${NC} npm 安装失败"
  echo -e "  尝试加 --unsafe-perm: ${BLUE}sudo npm install -g termctl --unsafe-perm${NC}"
  exit 1
fi

# 5. 启动 daemon
echo ""
echo -e "${BLUE}→${NC} 启动 daemon..."
echo -e "${YELLOW}!${NC} 终端将显示二维码, 请在手机 APP 上扫描"
echo ""
exec termctl
