#!/bin/bash
# yangjinming.org All-in-One Installer (Mac)
cd "$(dirname "$0")"

echo ""
echo "============================================================"
echo "  yangjinming.org All-in-One Installer (Mac)"
echo "  Claude Code + OpenClaw (Claude integrated)"
echo "============================================================"
echo ""

if ! command -v node &> /dev/null; then
    echo "[ERROR] Node.js not found."
    echo "Install: brew install node   OR   https://nodejs.org/"
    read -p "Press Enter to exit..."
    exit 1
fi
echo "[OK] Node.js: $(node --version)"

read -p "Enter your API Key (sk-...): " USER_KEY
if [ -z "$USER_KEY" ]; then
    echo "[ERROR] No API Key provided."
    read -p "Press Enter to exit..."
    exit 1
fi

SHELL_CONFIG="$HOME/.zshrc"
case "$SHELL" in
    *zsh)  SHELL_CONFIG="$HOME/.zshrc" ;;
    *bash) SHELL_CONFIG="$HOME/.bash_profile" ;;
esac
touch "$SHELL_CONFIG"

echo ""
echo "[1/5] Installing Claude Code CLI..."
npm install -g @anthropic-ai/claude-code 2>&1 | tail -3

echo ""
echo "[2/5] Installing OpenClaw CLI..."
npm install -g openclaw 2>&1 | tail -3 || npm install -g @openclaw/cli 2>&1 | tail -3

echo ""
echo "[3/5] Setting environment variables in $SHELL_CONFIG..."
grep -v "ANTHROPIC_BASE_URL\|ANTHROPIC_API_KEY\|ANTHROPIC_AUTH_TOKEN\|yangjinming.org Claude" "$SHELL_CONFIG" > "$SHELL_CONFIG.tmp" 2>/dev/null || true
mv "$SHELL_CONFIG.tmp" "$SHELL_CONFIG" 2>/dev/null || true
cat >> "$SHELL_CONFIG" << ENV_EOF

# yangjinming.org Claude Code (added by setup script)
export ANTHROPIC_BASE_URL="https://yangjinming.org/anthropic"
export ANTHROPIC_API_KEY="$USER_KEY"
export ANTHROPIC_AUTH_TOKEN="$USER_KEY"
ENV_EOF

echo ""
echo "[4/5] Preparing OpenClaw config..."
mkdir -p "$HOME/.openclaw"
[ -f "$HOME/.openclaw/openclaw.json" ] && cp "$HOME/.openclaw/openclaw.json" "$HOME/.openclaw/openclaw.json.backup"

echo ""
echo "[5/5] Writing OpenClaw config..."
cat > "$HOME/.openclaw/openclaw.json" << JSON_EOF
{
  "models": {
    "mode": "merge",
    "providers": {
      "yangjinming": {
        "baseUrl": "https://yangjinming.org/anthropic",
        "apiKey": "$USER_KEY",
        "api": "anthropic-messages",
        "models": [
          { "id": "claude-opus-4-8", "name": "Claude Opus 4.8", "contextWindow": 200000, "maxTokens": 8192 },
          { "id": "claude-sonnet-4-6", "name": "Claude Sonnet 4.6", "contextWindow": 200000, "maxTokens": 8192 },
          { "id": "claude-haiku-4-5-20251001", "name": "Claude Haiku 4.5", "contextWindow": 200000, "maxTokens": 8192 }
        ]
      }
    }
  },
  "agents": {
    "defaults": { "model": { "primary": "yangjinming/claude-sonnet-4-6" } }
  }
}
JSON_EOF

echo ""
echo "============================================================"
echo "  [SUCCESS] All set up!"
echo "============================================================"
echo ""
echo "NEXT: Close this Terminal, open a NEW Terminal, then try:"
echo "  claude                       (Claude Code)"
echo "  openclaw chat --local        (OpenClaw chat)"
echo "  openclaw dashboard           (OpenClaw web UI)"
echo ""
read -p "Press Enter to exit..."
