#!/bin/sh
# NAOMI Cloud — установка клиента одной командой:
#   curl -fsSL https://naomi-cloud.ru/install.sh | sh
# Ставит приложение в ~/naomi-cloud и запускает веб-интерфейс (откроется браузер).
# Переменные окружения: NAOMI_DIR (куда ставить), NAOMI_NO_START=1 (не запускать после установки).
# POSIX sh — работает и через sh, и через bash.
set -eu

DIST_URL="https://naomi-cloud.ru/dist/naomi-latest.tgz"
DEST="${NAOMI_DIR:-$HOME/naomi-cloud}"

echo "── NAOMI Cloud · установка клиента ──────────────"

# ── 1. Node.js ≥ 20 ──
need_node() {
  echo "✗ Node.js не найден или старше 20-й версии."
  echo "  Установи Node.js 22+ с https://nodejs.org (или: sudo apt install -y nodejs)"
  echo "  и повтори установку."
  exit 1
}
if command -v node >/dev/null 2>&1; then
  NODE_MAJOR="$(node -p 'process.versions.node.split(".")[0]')"
  [ "$NODE_MAJOR" -ge 20 ] || need_node
else
  # пробуем поставить через NodeSource (нужен sudo); не вышло — подскажем руками
  echo "· Node.js не найден, пробую установить (нужен sudo)…"
  if command -v sudo >/dev/null 2>&1 && command -v curl >/dev/null 2>&1; then
    if curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -n bash - >/dev/null 2>&1 \
       && sudo -n apt-get install -y -qq nodejs >/dev/null 2>&1; then
      echo "✓ Node.js $(node -v) установлен"
    else
      need_node
    fi
  else
    need_node
  fi
fi

# ── 2. Скачиваем и распаковываем ──
echo "· Скачиваю NAOMI…"
mkdir -p "$DEST"
TMP="$(mktemp -d)"
trap 'rm -rf "$TMP"' EXIT
curl -fsSL "$DIST_URL" -o "$TMP/naomi.tgz"
tar -xzf "$TMP/naomi.tgz" -C "$DEST" --strip-components=1

# ── 3. Зависимости ──
# node_modules уже вшит в дистрибутив — у пользователя одно скачивание с нашего
# сайта и ничего из npm-реестра; npm install остаётся страховкой для старых архивов
if [ -d "$DEST/node_modules/fastify" ]; then
  echo "✓ Зависимости уже в комплекте — ничего доустанавливать не нужно"
else
  echo "· Устанавливаю зависимости (1-2 минуты)…"
  cd "$DEST"
  npm install --omit=dev --silent --no-fund --no-audit
fi

# ── 4. Команда запуска ──
BIN_DIR="$HOME/.local/bin"
mkdir -p "$BIN_DIR"
cat > "$BIN_DIR/naomi" << EOF
#!/usr/bin/env bash
cd "$DEST"
exec node packages/app/bin/naomi.js "\$@"
EOF
chmod +x "$BIN_DIR/naomi"
case ":$PATH:" in
  *":$BIN_DIR:"*) ;;
  *) echo 'export PATH="$HOME/.local/bin:$PATH"' >> "$HOME/.profile"
     echo "· Добавил $BIN_DIR в PATH (вступит в силу после перелогина)" ;;
esac

# ── 5. Ярлыки (меню приложений + рабочий стол) и иконка ──
APP_ICON_SRC="$DEST/packages/app/public/img/naomi-cat.png"
ICON_DIR="$HOME/.local/share/icons/hicolor/256x256/apps"
MENU_DIR="$HOME/.local/share/applications"
if [ -f "$APP_ICON_SRC" ]; then
  mkdir -p "$ICON_DIR"
  cp -f "$APP_ICON_SRC" "$ICON_DIR/naomi.png"
fi
mkdir -p "$MENU_DIR"
cat > "$MENU_DIR/naomi.desktop" << EOF
[Desktop Entry]
Type=Application
Name=NAOMI
Comment=ИИ-агент для вашего компьютера
Exec="$BIN_DIR/naomi" launch
Icon=naomi
Terminal=false
StartupNotify=false
Categories=Utility;
EOF
DESKTOP_DIR=""
if command -v xdg-user-dir >/dev/null 2>&1; then
  DESKTOP_DIR="$(xdg-user-dir DESKTOP 2>/dev/null || true)"
fi
if [ -z "$DESKTOP_DIR" ] || [ ! -d "$DESKTOP_DIR" ]; then
  DESKTOP_DIR="$HOME/Desktop"
fi
if [ -d "$DESKTOP_DIR" ]; then
  cp -f "$MENU_DIR/naomi.desktop" "$DESKTOP_DIR/naomi.desktop"
  chmod +x "$DESKTOP_DIR/naomi.desktop"
  if command -v gio >/dev/null 2>&1; then
    gio set "$DESKTOP_DIR/naomi.desktop" metadata::trusted true 2>/dev/null || true
  fi
fi
if command -v update-desktop-database >/dev/null 2>&1; then
  update-desktop-database -q "$MENU_DIR" 2>/dev/null || true
fi
echo "✓ Ярлыки: меню приложений + рабочий стол ($DESKTOP_DIR)"

echo "✓ Установлено: $DEST"
echo "  Запуск:     naomi launch   (или $BIN_DIR/naomi launch)"
echo "──────────────────────────────────────────────────"

# ── 6. Стартуем ──
if [ -z "${NAOMI_NO_START:-}" ]; then
  echo "· Запускаю NAOMI — сейчас откроется браузер…"
  exec "$BIN_DIR/naomi" launch
fi
