#!/usr/bin/env bash
# codex-plugin-cc 수동 설치 스크립트
# Claude Code 세션에서 /plugin 명령 대신 사용
set -euo pipefail

PLUGIN_SRC="/tmp/codex-plugin-cc"
MARKETPLACE_DIR="$HOME/.claude/plugins/marketplaces/openai-codex"
CACHE_DIR="$HOME/.claude/plugins/cache/openai-codex/codex/1.0.3"
INSTALLED_JSON="$HOME/.claude/plugins/installed_plugins.json"
KNOWN_JSON="$HOME/.claude/plugins/known_marketplaces.json"

if [ ! -d "$PLUGIN_SRC" ]; then
  echo "ERROR: $PLUGIN_SRC not found. Run: gh repo clone openai/codex-plugin-cc /tmp/codex-plugin-cc -- --depth 1"
  exit 1
fi

echo "=== Step 1: Register marketplace ==="
mkdir -p "$MARKETPLACE_DIR"
cp -r "$PLUGIN_SRC"/.claude-plugin "$MARKETPLACE_DIR/"
cp -r "$PLUGIN_SRC"/plugins "$MARKETPLACE_DIR/"
cp -r "$PLUGIN_SRC"/scripts "$MARKETPLACE_DIR/" 2>/dev/null || true
cp "$PLUGIN_SRC"/package.json "$MARKETPLACE_DIR/" 2>/dev/null || true
echo "Marketplace registered at: $MARKETPLACE_DIR"

echo "=== Step 2: Install plugin to cache ==="
mkdir -p "$CACHE_DIR"
cp -r "$PLUGIN_SRC"/plugins/codex/* "$CACHE_DIR/"
cp -r "$PLUGIN_SRC"/plugins/codex/.claude-plugin "$CACHE_DIR/"
echo "Plugin cached at: $CACHE_DIR"

echo "=== Step 3: Update known_marketplaces.json ==="
python3 -c "
import json, pathlib
from datetime import datetime, timezone

path = pathlib.Path('$KNOWN_JSON')
data = json.loads(path.read_text()) if path.exists() else {}

data['openai-codex'] = {
    'source': {'source': 'github', 'repo': 'openai/codex-plugin-cc'},
    'installLocation': '$MARKETPLACE_DIR',
    'lastUpdated': datetime.now(timezone.utc).isoformat()
}

path.write_text(json.dumps(data, indent=2) + '\n')
print('known_marketplaces.json updated')
"

echo "=== Step 4: Update installed_plugins.json ==="
python3 -c "
import json, pathlib
from datetime import datetime, timezone

path = pathlib.Path('$INSTALLED_JSON')
data = json.loads(path.read_text()) if path.exists() else {'version': 2, 'plugins': {}}

now = datetime.now(timezone.utc).isoformat()
data['plugins']['codex@openai-codex'] = [{
    'scope': 'user',
    'installPath': '$CACHE_DIR',
    'version': '1.0.3',
    'installedAt': now,
    'lastUpdated': now
}]

path.write_text(json.dumps(data, indent=2) + '\n')
print('installed_plugins.json updated')
"

echo "=== Step 5: Verify ==="
echo "Codex CLI version: $(codex --version 2>/dev/null || echo 'NOT FOUND')"
echo "Plugin files:"
ls -la "$CACHE_DIR/.claude-plugin/plugin.json" 2>/dev/null && echo "OK: plugin.json found" || echo "FAIL: plugin.json missing"
ls -la "$CACHE_DIR/commands/" 2>/dev/null | head -5 && echo "OK: commands found" || echo "FAIL: commands missing"
ls -la "$CACHE_DIR/skills/" 2>/dev/null | head -5 && echo "OK: skills found" || echo "FAIL: skills missing"

echo ""
echo "=== Installation complete ==="
echo "Next steps:"
echo "  1. Restart Claude Code session (or /reload-plugins)"
echo "  2. Run /codex:setup to verify"
echo "  3. If not authenticated: !codex login"
