#!/bin/bash
# compile.sh — compila serf-cloud para Ubuntu 26.04 (mismo OS que producción)
# Genera node_modules con SOLO dependencias de producción.
# Ejecutar desde la estación de desarrollo (Fedora 44) antes de cada deploy.
# Patrón idéntico a face-match-node/compile.sh.

set -e

PROYECTO_DIR="$(cd "$(dirname "$0")" && pwd)"
WORKSPACE_DIR="$(cd "$PROYECTO_DIR/.." && pwd)"
STORAGE_DIR="$WORKSPACE_DIR/podman-storage"

# Crear storage.conf temporal apuntando al workspace local
# (evita usar el storage del sistema que puede estar en un disco externo no montado)
STORAGE_CONF="$(mktemp /tmp/podman-storage-XXXXXX.conf)"
cat > "$STORAGE_CONF" << EOF
[storage]
driver = "overlay"
graphRoot = "$STORAGE_DIR"
runRoot = "/run/user/$(id -u)/containers"

[storage.options]
mount_program = "/usr/bin/fuse-overlayfs"
EOF
export CONTAINERS_STORAGE_CONF="$STORAGE_CONF"
trap 'rm -f "$STORAGE_CONF"' EXIT

# Ubuntu 26.04 Noble es compatible con bookworm-slim para N-API builds
IMAGE="docker.io/node:26-bookworm-slim"

echo "==> fide-serf-cloud: compilando para Ubuntu 26.04..."
echo "==> Proyecto: $PROYECTO_DIR"

if [ -d "$PROYECTO_DIR/node_modules" ]; then
  echo "==> Limpiando node_modules previo..."
  rm -rf "$PROYECTO_DIR/node_modules"
fi

podman run --rm \
  -v "$PROYECTO_DIR":/app:Z \
  -w /app \
  "$IMAGE" \
  sh -c "set -e && \
    npm install --omit=dev --no-audit --no-fund --prefer-offline && \
    echo '==> Dependencias instaladas.' && \
    node -e 'require(\"fastify\"); console.log(\"==> fastify OK\");' && \
    node -e 'require(\"mssql\"); console.log(\"==> mssql OK\");' && \
    node -e 'require(\"otplib\"); console.log(\"==> otplib OK\");' && \
    node -e 'require(\"qrcode-svg\"); console.log(\"==> qrcode-svg OK\");' && \
    echo '==> Compilación exitosa — listo para transferir al servidor.'"

echo ""
echo "==> Próximos pasos:"
echo "    bash deploy.sh USUARIO SERVIDOR"
echo "    Ejemplo: bash deploy.sh sysdevops apibatch.fidelitas.com.ar"
