#!/usr/bin/env bash
# ArchiSymphonyCoWorks — ワンクリックインストーラ (Linux)
set -e

cat <<'BANNER'

  ╭────────────────────────────────────────────────────────╮
  │    ArchiSymphonyCoWorks — ようこそ                     │
  │    ターミナルに住む AI バディを、あなたに。            │
  ╰────────────────────────────────────────────────────────╯

BANNER

say() { printf "\n\033[1;36m[%s]\033[0m %s\n" "$(date +%H:%M:%S)" "$*"; }
err() { printf "\n\033[1;31m[ERROR]\033[0m %s\n" "$*" >&2; }

# ── 1. メール入力 ──────────────────────────────────────
read -rp "社内メールアドレス (@paper-less-studio.com): " EMAIL
if [[ ! "$EMAIL" == *"@paper-less-studio.com" ]]; then
  err "@paper-less-studio.com 社員専用です。"; exit 1
fi

# ── 2. VS Code 導入チェック ─────────────────────────────
CODE_BIN="$(command -v code 2>/dev/null || command -v codium 2>/dev/null || true)"
if [ -z "$CODE_BIN" ]; then
  say "VS Code を導入します…"
  if command -v snap >/dev/null; then
    sudo snap install code --classic
  elif command -v apt-get >/dev/null; then
    curl -fsSL https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > /tmp/microsoft.gpg
    sudo install -o root -g root -m 644 /tmp/microsoft.gpg /etc/apt/trusted.gpg.d/
    echo "deb [arch=amd64,arm64,armhf signed-by=/etc/apt/trusted.gpg.d/microsoft.gpg] https://packages.microsoft.com/repos/code stable main" \
      | sudo tee /etc/apt/sources.list.d/vscode.list
    sudo apt-get update
    sudo apt-get install -y code
  else
    err "snap も apt も見つかりません。手動インストール: https://code.visualstudio.com/"
    exit 1
  fi
  CODE_BIN="$(command -v code)"
fi
say "VS Code 検出: $CODE_BIN"

# ── 3. マニフェスト + OTP + DL ───────────────────────────
BACKEND="${COWORKS_BACKEND:-https://br.archisymphony.com/coworks/v1}"
MANIFEST=$(curl -fsSL "$BACKEND/releases/beta.json")
VERSION=$(echo "$MANIFEST" | python3 -c "import json,sys; print(json.load(sys.stdin).get('latest',''))")
VSIX_URL=$(echo "$MANIFEST" | python3 -c "import json,sys; print(json.load(sys.stdin).get('url',''))")

curl -fsS -X POST "$BACKEND/auth/request-otp" \
  -H "Content-Type: application/json" -d "{\"email\":\"$EMAIL\"}" >/dev/null
say "認証コード送信しました。メールをご確認ください。"
read -rp "OTP: " OTP

TOKEN=$(curl -fsS -X POST "$BACKEND/auth/verify" \
  -H "Content-Type: application/json" \
  -d "{\"email\":\"$EMAIL\",\"otp\":\"$OTP\"}" | python3 -c "import json,sys; print(json.load(sys.stdin).get('token',''))")
[ -z "$TOKEN" ] && { err "認証失敗"; exit 1; }

TMP="/tmp/archisymphony-coworks-$VERSION.vsix"
curl -fsSL -H "Authorization: Bearer $TOKEN" "$VSIX_URL?token=$TOKEN" -o "$TMP"
"$CODE_BIN" --install-extension "$TMP" --force

say "セットアップ完了。VS Code を起動します。"
"$CODE_BIN" . || true

cat <<'DONE'

  ╭────────────────────────────────────────────────────────╮
  │  ✨ インストール完了 ✨                                │
  │  ステータスバー右下の CoWorks アイコンから             │
  ╰────────────────────────────────────────────────────────╯

DONE
