#!/usr/bin/env bash
# run-local.sh — levanta el tunel, carga los secretos del dominio y corre el servicio.
# Toda la parametrizacion vive en ./local-dev.env. Sin argumentos.
# Requiere VPN activa.
# Documentacion: ../../03-simappe-stack/flujos/FLUJO_PRUEBA_LOCAL_TUNEL_SSH.md
set -euo pipefail

DIR="$(cd "$(dirname "$0")" && pwd)"
CONF="${TUNNEL_CONF:-$DIR/local-dev.env}"
[ -f "$CONF" ] || { echo "No existe la config: $CONF"; exit 1; }
set -a; . "$CONF"; set +a

: "${SERVICE_DIR:?Falta SERVICE_DIR en $CONF}"
: "${DOMAIN_ENV_FILE:?Falta DOMAIN_ENV_FILE en $CONF}"

TUNNEL_CONF="$CONF" "$DIR/infra-tunnel.sh" up

[ -f "$DOMAIN_ENV_FILE" ] || { echo "No existe DOMAIN_ENV_FILE: $DOMAIN_ENV_FILE"; exit 1; }
# Exporta SOLO las variables necesarias: sourcear el .env completo rompe por
# JAVA_TOOL_OPTIONS multi-token y ademas impone -Dserver.port=0 (puerto aleatorio).
set -a
eval "$(grep -E '^(SPRING_PROFILES_ACTIVE|APP_PROFILE|CONFIG_ENV|DB_ENCRYPTION_KEY|EUREKA_SERVICE_URL|CONFIG_GIT_URI|CONFIG_GIT_USERNAME|CONFIG_GIT_PASSWORD)=' "$DOMAIN_ENV_FILE")"
set +a
APP_PROFILE="${APP_PROFILE:-dev}"
SPRING_PROFILES_ACTIVE="${SPRING_PROFILES_ACTIVE:-common,${APP_PROFILE}}"   # 'common' aporta application.jwt.secret
export APP_PROFILE SPRING_PROFILES_ACTIVE

echo "Arrancando ${SERVICE_DIR} (perfiles=${SPRING_PROFILES_ACTIVE}, puerto=${SERVICE_PORT:-8081}, nodo=${SSH_HOST})"
cd "$SERVICE_DIR"
mvn spring-boot:run -Dspring-boot.run.jvmArguments="-Dserver.port=${SERVICE_PORT:-8081}"
