#!/bin/bash

# Script para instalar manualmente las dependencias y lidiar con problemas de oci-sdk

echo "===== MCP OCI SERVER DEPENDENCY INSTALLER ====="
echo "Este script intenta resolver problemas comunes de instalación."

# Limpiar las instalaciones previas
echo "Paso 1: Limpiando instalaciones previas..."
rm -rf node_modules
rm -f package-lock.json

# Instalar primero TypeScript y tipos básicos
echo "Paso 2: Instalando TypeScript y tipos básicos..."
npm install --save-dev typescript @types/node eslint @typescript-eslint/eslint-plugin @typescript-eslint/parser

# Instalar Zod
echo "Paso 3: Instalando Zod..."
npm install zod

# Instalar dependencias principales excepto oci-sdk
echo "Paso 4: Instalando dependencias principales (excepto oci-sdk)..."
npm install @modelcontextprotocol/sdk commander dotenv

# Instalar OCI SDK con opciones más flexibles
echo "Paso 5: Instalando OCI SDK..."
npm install --no-save oci-sdk || {
    echo "Intentando instalar oci-sdk con --legacy-peer-deps..."
    npm install --legacy-peer-deps oci-sdk
}

# Verificar si la instalación de OCI SDK fue exitosa
if npm list oci-sdk; then
    echo "✅ OCI SDK instalado correctamente"
else
    echo "⚠️ La instalación de OCI SDK ha fallado. Procediendo con alternativas..."
    
    # Opción alternativa: copiar desde otro proyecto o usar una versión específica
    echo "Intentando con una versión específica de OCI SDK..."
    npm install --legacy-peer-deps --save-dev oci-sdk@2.73.0
fi

# Intento de compilación
echo "Paso 6: Intentando compilar el proyecto..."
npm run build

if [ $? -eq 0 ]; then
    echo "✅ Compilación exitosa!"
else
    echo "❌ Compilación fallida. Revisa los errores específicos arriba."
    echo "Sugerencia: Verifica si es un problema con el tipado de OCI SDK o con el MCP SDK."
fi

echo "===== PROCESO COMPLETADO ====="
