#!/bin/sh
# =============================================================================
# DolphinPI 一键安装脚本
#
# 用法:
#   curl -fsSL https://dolphindb.cn/install-dolphinpi.sh | sh
#
# 或本地:
#   ./install.sh
#
# 做了什么:
#   1. 检查 Node.js >= 22 和 npm
#   2. npm install -g dolphinpi（自动装 pi + dolphindb）
#   3. 提示配置环境变量（可选）
# =============================================================================

set -e

GREEN='\033[32m'
CYAN='\033[36m'
BOLD='\033[1m'
NC='\033[0m'
RED='\033[31m'

echo ''
echo "${BOLD}${CYAN}  🐬 DolphinPI 安装程序${NC}"
echo ''

# ─── 环境检查 ──────────────────────────────────────────────────────────

check_fail=0

if ! command -v node >/dev/null 2>&1; then
  echo "  ${RED}✗${NC} Node.js 未安装（需要 >= 22）"
  check_fail=1
else
  node_version=$(node --version | sed 's/v//')
  node_major=$(echo "$node_version" | cut -d. -f1)
  if [ "$node_major" -lt 22 ]; then
    echo "  ${RED}✗${NC} Node.js $node_version（需要 >= 22.19）"
    check_fail=1
  else
    echo "  ${GREEN}✓${NC} Node.js $node_version"
  fi
fi

if ! command -v npm >/dev/null 2>&1; then
  echo "  ${RED}✗${NC} npm 未安装"
  check_fail=1
else
  echo "  ${GREEN}✓${NC} npm $(npm --version)"
fi

if [ "$check_fail" -eq 1 ]; then
  echo ''
  echo "请先安装 Node.js >= 22: https://nodejs.org"
  exit 1
fi

# ─── 安装 ──────────────────────────────────────────────────────────────

echo ''
echo "  ${BOLD}安装 dolphinpi...${NC}"
npm install -g dolphinpi

echo ''
echo "${BOLD}${GREEN}✅ 安装完成！${NC}"
echo ''
echo '启动方式:'
echo ''
echo "  ${BOLD}dolphinpi${NC}              # 交互模式"
echo "  ${BOLD}dolphinpi -c${NC}           # 继续上次会话"
echo "  ${BOLD}dolphinpi --help${NC}       # 查看帮助"
echo ''
echo '可选：配置环境变量跳过交互式配置'
echo ''
echo '  export DOLPHINPI_DDB_HOST=10.0.0.1'
echo '  export DOLPHINPI_DDB_PORT=8920'
echo '  export DOLPHINPI_DDB_USER=admin'
echo '  export DOLPHINPI_DDB_PASS=123456'
echo '  export DOLPHINPI_DOLPHINMIND_TOKEN=eyJ...'
echo ''

# ─── 可选：立即启动 ────────────────────────────────────────────────────

if [ -t 0 ] && [ -t 1 ]; then
  printf '是否立即启动 dolphinpi？[Y/n] '
  read -r answer
  case "$answer" in
    n|N|no|NO) ;;
    *) echo ''; exec dolphinpi ;;
  esac
fi
