#!/bin/bash

# Script para construir y publicar el paquete MCP OCI Server

echo "===== MCP OCI SERVER BUILD SCRIPT ====="
echo "Este script automatiza la construcción y publicación del paquete."

# Comprobar que estamos en el directorio correcto
if [ ! -f "package.json" ]; then
    echo "Error: No se ha encontrado package.json. Asegúrate de estar en el directorio del proyecto."
    exit 1
fi

# 1. Limpiar la instalación anterior
echo ""
echo "Paso 1: Limpiando instalación anterior..."
rm -rf node_modules dist
rm -f *.tgz

# 2. Instalar dependencias
echo ""
echo "Paso 2: Instalando dependencias..."
npm install

if [ $? -ne 0 ]; then
    echo "Error: Falló la instalación de dependencias."
    exit 1
fi

# 3. Compilar el proyecto
echo ""
echo "Paso 3: Compilando el proyecto..."
npm run build

if [ $? -ne 0 ]; then
    echo "Error: Falló la compilación."
    exit 1
fi

# 4. Crear el paquete
echo ""
echo "Paso 4: Creando el paquete..."
npm pack

if [ $? -ne 0 ]; then
    echo "Error: Falló la creación del paquete."
    exit 1
fi

PACKAGE_FILE=$(ls jocebal-mcp-server-oci-*.tgz | sort | tail -n 1)

echo ""
echo "✅ Construcción completada exitosamente!"
echo "Paquete creado: $PACKAGE_FILE"

# Preguntar si quiere publicar en npm
echo ""
read -p "¿Deseas publicar el paquete en npm? (s/n): " PUBLISH

if [ "$PUBLISH" == "s" ] || [ "$PUBLISH" == "S" ]; then
    echo ""
    echo "Paso 5: Publicando en npm..."
    npm publish --access public
    
    if [ $? -ne 0 ]; then
        echo "Error: Falló la publicación en npm."
        exit 1
    fi
    
    echo ""
    echo "✅ Publicación completada exitosamente!"
else
    echo ""
    echo "Publicación omitida. Puedes instalar localmente usando:"
    echo "npm install -g ./$PACKAGE_FILE"
fi

# Preguntar si quiere crear un enlace simbólico global
echo ""
read -p "¿Deseas crear un enlace simbólico global para desarrollo local? (s/n): " LINK

if [ "$LINK" == "s" ] || [ "$LINK" == "S" ]; then
    echo ""
    echo "Paso 6: Creando enlace simbólico global..."
    npm link
    
    if [ $? -ne 0 ]; then
        echo "Error: Falló la creación del enlace simbólico."
        exit 1
    fi
    
    echo ""
    echo "✅ Enlace simbólico creado exitosamente!"
    echo "Ahora puedes usar el comando 'mcp-server-oci' desde cualquier ubicación."
else
    echo ""
    echo "Enlace simbólico omitido."
fi

echo ""
echo "===== PROCESO COMPLETADO ====="
echo "Puedes instalar el paquete en la configuración de Claude Desktop usando:"
echo ""
echo "  \"oracle-cloud\": {"
echo "    \"command\": \"$(which npx)\","
echo "    \"args\": ["
echo "      \"-y\","
echo "      \"@jocebal/mcp-server-oci\","
echo "      \"--profile\","
echo "      \"DEFAULT\""
echo "    ],"
echo "    \"env\": {}"
echo "  }"
echo ""
