#!/usr/bin/env bash
set -euo pipefail

# Signal AI Gateway — Gemini CLI 接入（对标 147ai：~/.gemini/.env + GOOGLE_GEMINI_BASE_URL）
# 用法: curl -fsSL <portal>/docs/scripts/gemini-cli.sh | GATEWAY_BASE_URL='https://...' bash -s -- sk-...
# 可选: GATEWAY_GEMINI_MODEL=gemini-3-flash-preview

API_KEY="${1:-}"
GATEWAY_BASE="${GATEWAY_BASE_URL:-https://api.4stoken.cn}"
GEMINI_MODEL="${GATEWAY_GEMINI_MODEL:-gemini-3-flash-preview}"
SETUP_DIR="$HOME/.gemini"
ENV_FILE="$SETUP_DIR/.env"
SETTINGS_FILE="$SETUP_DIR/settings.json"

if [ -z "$API_KEY" ]; then
  printf '\033[1;31m错误：\033[0m请提供 Client Key\n'
  exit 1
fi

mkdir -p "$SETUP_DIR"

for f in "$ENV_FILE" "$SETTINGS_FILE"; do
  if [ -f "$f" ]; then
    cp "$f" "$f.bak.$(date +%s)"
    printf '\033[0;36m已备份\033[0m %s\n' "$f"
  fi
done

cat > "$ENV_FILE" <<EOF
# Signal AI Gateway — Gemini CLI
GEMINI_API_KEY=$API_KEY
GEMINI_MODEL=$GEMINI_MODEL
GOOGLE_GEMINI_BASE_URL=$GATEWAY_BASE
EOF

if command -v python3 &>/dev/null; then
  python3 -c "
import json, os
path = '''$SETTINGS_FILE'''
data = {}
if os.path.isfile(path):
    with open(path) as f:
        data = json.load(f)
sec = data.setdefault('security', {})
auth = sec.setdefault('auth', {})
auth['selectedType'] = 'gemini-api-key'
with open(path, 'w') as f:
    json.dump(data, f, indent=2, ensure_ascii=False)
"
else
  cat > "$SETTINGS_FILE" <<'EOF'
{
  "security": {
    "auth": {
      "selectedType": "gemini-api-key"
    }
  }
}
EOF
fi

printf '\n\033[1;36m══════════════════════════════════════════\033[0m\n'
printf '\033[1m   Signal Gateway → Gemini CLI\033[0m\n'
printf '\033[1;36m══════════════════════════════════════════\033[0m\n\n'

printf '  已写入:\n'
printf '    %s\n' "$ENV_FILE"
printf '    %s\n\n' "$SETTINGS_FILE"

printf '\033[1m配置内容（对标 147ai）\033[0m\n'
printf '  GEMINI_API_KEY=%s\n' "$API_KEY"
printf '  GEMINI_MODEL=%s\n' "$GEMINI_MODEL"
printf '  GOOGLE_GEMINI_BASE_URL=%s\n\n' "$GATEWAY_BASE"

printf '\033[1m验证\033[0m\n'
printf '  终端执行: \033[1mgemini\033[0m\n'
printf '  或 curl:\n'
printf '    POST %s/v1beta/models/%s:generateContent\n\n' "$GATEWAY_BASE" "$GEMINI_MODEL"

printf '\033[1;33m后端要求\033[0m\n'
printf '  Gateway 需配置 \033[1mgemini.native\033[0m 线路（见 sql gateway-gemini-native-cli-v1.sql）\n'
printf '  模型 %s 须在 Portal「模型与价格」已发布\n\n' "$GEMINI_MODEL"

printf '\033[1m方式二 — CC Switch\033[0m\n'
printf '  CC Switch → Gemini 图标 → 自定义供应商 → Base URL + Key + 模型\n'
printf '  或运行: curl .../cc-switch.sh\n\n'

if command -v pbcopy &>/dev/null; then
  printf '%s' "$API_KEY" | pbcopy
  printf '\033[0;32m✓ API Key 已复制到剪贴板\033[0m\n'
fi

printf '\033[0;33m注意：Gemini CLI 走 Google 原生 /v1beta，不是 OpenAI /v1/chat/completions。\033[0m\n'
