#!/bin/sh
# PLGames AI CLI installer (Linux / macOS)
#
# Usage:
#   curl -fsSL https://plgames-ai.duckdns.org/install.sh | sh
#
# Что делает:
#   1. Проверяет Node 20+ (если нет — выходит с подсказкой)
#   2. Скачивает последний tarball PLGames CLI
#   3. Ставит глобально через npm
#   4. Печатает следующие шаги

set -e

BASE_URL="${PLGAMES_BASE_URL:-https://plgames-ai.duckdns.org}"
DOWNLOAD_URL="${BASE_URL}/api/v1/downloads/cli/latest"
TMP_DIR="$(mktemp -d)"
TARBALL="${TMP_DIR}/plgames-cli.tgz"

# --- ANSI colors (graceful если терминал не поддерживает)
if [ -t 1 ] && command -v tput >/dev/null 2>&1; then
  GREEN="$(tput setaf 2)"
  YELLOW="$(tput setaf 3)"
  RED="$(tput setaf 1)"
  BOLD="$(tput bold)"
  RESET="$(tput sgr0)"
else
  GREEN=""; YELLOW=""; RED=""; BOLD=""; RESET=""
fi

say()  { printf "%s%s%s\n" "$GREEN" "$1" "$RESET"; }
warn() { printf "%s%s%s\n" "$YELLOW" "$1" "$RESET"; }
fail() { printf "%s%s%s\n" "$RED" "$1" "$RESET" >&2; exit 1; }

cleanup() { rm -rf "$TMP_DIR"; }
trap cleanup EXIT

# --- Node check
if ! command -v node >/dev/null 2>&1; then
  fail "node не найден. Установи Node.js 20+ → https://nodejs.org/  и повтори."
fi

NODE_MAJOR="$(node -p 'process.versions.node.split(".")[0]')"
if [ "$NODE_MAJOR" -lt 20 ]; then
  fail "Нужен Node 20+, у тебя $(node -v). Обнови → https://nodejs.org/"
fi

if ! command -v npm >/dev/null 2>&1; then
  fail "npm не найден (но node есть?). Переустанови Node.js полностью."
fi

say "→ Node $(node -v) обнаружен"

# --- Download
say "→ Скачиваю plgames-cli..."
if command -v curl >/dev/null 2>&1; then
  curl -fsSL "$DOWNLOAD_URL" -o "$TARBALL"
elif command -v wget >/dev/null 2>&1; then
  wget -qO "$TARBALL" "$DOWNLOAD_URL"
else
  fail "ни curl, ни wget не найдены. Установи один из них."
fi

[ -s "$TARBALL" ] || fail "Скачанный файл пуст или повреждён (URL: $DOWNLOAD_URL)"

# --- Install
say "→ Устанавливаю глобально через npm..."
npm install -g "$TARBALL" >/dev/null

# --- Verify
if ! command -v plgames >/dev/null 2>&1; then
  warn "plgames установлен, но не виден в PATH. Возможно, нужно перезапустить shell."
  warn "Или выполни:  export PATH=\"\$(npm prefix -g)/bin:\$PATH\""
  exit 0
fi

VER="$(plgames --version 2>/dev/null || echo unknown)"
say "✓ plgames $VER установлен"

cat <<EOF

${BOLD}Следующие шаги:${RESET}

  1. Получить API key:    https://plgames-ai.duckdns.org/  (Профиль → API keys)
  2. Запустить:           ${GREEN}plgames${RESET}             # interactive REPL
                          ${GREEN}plgames -p "Привет"${RESET} # one-shot
                          ${GREEN}plgames --help${RESET}

При первом запуске выбери ${BOLD}OpenAI Compatible${RESET} → дефолтный baseUrl
(${BASE_URL}/v1) и вставь свой API key.

EOF
