#!/bin/bash
# Script de configuración automática de Chrome DevTools MCP

PROJECT_NAME=$(basename $(pwd))
CHROME_PORT=$((9222 + $(echo $PROJECT_NAME | cksum | cut -d' ' -f1) % 100))
CLAUDE_CONFIG_DIR="$HOME/.config/claudecode"
CLAUDE_CONFIG_FILE="$CLAUDE_CONFIG_DIR/mcp.json"

echo "======================================"
echo "Configuración de Chrome DevTools MCP"
echo "Proyecto: $PROJECT_NAME"
echo "Puerto: $CHROME_PORT"
echo "======================================"
echo ""

# Crear directorio de configuración si no existe
if [ ! -d "$CLAUDE_CONFIG_DIR" ]; then
    echo "Creando directorio de configuración de Claude Code..."
    mkdir -p "$CLAUDE_CONFIG_DIR"
fi

# Función para crear configuración nueva
create_new_config() {
    cat > "$CLAUDE_CONFIG_FILE" << EOF
{
  "mcpServers": {
    "chrome-devtools": {
      "command": "npx",
      "args": [
        "chrome-devtools-mcp@latest",
        "--browserUrl=http://localhost:${CHROME_PORT}",
        "--isolated"
      ]
    }
  }
}
EOF
    echo "✓ Configuración creada exitosamente"
}

# Función para actualizar configuración existente
update_existing_config() {
    # Hacer backup
    cp "$CLAUDE_CONFIG_FILE" "$CLAUDE_CONFIG_FILE.backup"
    echo "✓ Backup creado: $CLAUDE_CONFIG_FILE.backup"

    # Usar jq para actualizar si está disponible
    if command -v jq &> /dev/null; then
        jq ".mcpServers[\"chrome-devtools\"].args = [\"chrome-devtools-mcp@latest\", \"--browserUrl=http://localhost:${CHROME_PORT}\", \"--isolated\"]" \
            "$CLAUDE_CONFIG_FILE.backup" > "$CLAUDE_CONFIG_FILE"
        echo "✓ Configuración actualizada con jq"
    else
        echo "⚠ jq no está instalado. Mostrando configuración manual..."
        echo ""
        echo "Por favor, editá manualmente $CLAUDE_CONFIG_FILE"
        echo "y cambiá el --browserUrl a: http://localhost:${CHROME_PORT}"
        echo "y agregá --isolated como tercer argumento"
        echo ""
        echo "O instalá jq: sudo apt install jq"
        return 1
    fi
}

# Verificar si existe config.json
if [ -f "$CLAUDE_CONFIG_FILE" ]; then
    echo "Archivo de configuración existente encontrado."
    echo "Opciones:"
    echo "  1) Actualizar configuración existente (recomendado)"
    echo "  2) Sobrescribir con nueva configuración"
    echo "  3) Mostrar configuración manual"
    echo "  4) Cancelar"
    echo ""
    read -p "Seleccioná una opción (1-4): " option

    case $option in
        1)
            update_existing_config
            ;;
        2)
            echo "⚠ Esto sobrescribirá toda tu configuración actual."
            read -p "¿Estás seguro? (s/N): " confirm
            if [[ $confirm =~ ^[Ss]$ ]]; then
                create_new_config
            else
                echo "Operación cancelada"
                exit 0
            fi
            ;;
        3)
            echo ""
            echo "Configuración manual:"
            echo "1. Editá: $CLAUDE_CONFIG_FILE"
            echo "2. Agregá o modificá la sección mcpServers:"
            echo ""
            cat << 'EOF'
{
  "mcpServers": {
    "chrome-devtools": {
      "command": "npx",
      "args": [
        "chrome-devtools-mcp@latest",
EOF
            echo "        \"--browserUrl=http://localhost:${CHROME_PORT}\","
            cat << 'EOF'
        "--isolated"
      ]
    }
  }
}
EOF
            exit 0
            ;;
        4)
            echo "Operación cancelada"
            exit 0
            ;;
        *)
            echo "Opción inválida"
            exit 1
            ;;
    esac
else
    echo "No se encontró configuración existente. Creando nueva..."
    create_new_config
fi

echo ""
echo "======================================"
echo "✓ Configuración completada"
echo "======================================"
echo ""
echo "Próximos pasos:"
echo "1. Iniciá el navegador: ./start-browser.sh"
echo "2. Reiniciá Claude Code para aplicar cambios"
echo ""
echo "Ver documentación completa: .claude/CHROME_SETUP.md"
