#!/usr/bin/env bash
set -euo pipefail

ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
cd "$ROOT_DIR"

NGROK_URL="${NGROK_URL:-https://comparatuvehiculo.ngrok.io}"
NGROK_UPSTREAM="${NGROK_UPSTREAM:-127.0.0.1:3000}"
NGROK_LOG_FILE="${NGROK_LOG_FILE:-/tmp/comp_autos_ngrok.log}"

source "$ROOT_DIR/scripts/load-node.sh"
source "$ROOT_DIR/scripts/ngrok-common.sh"

echo "Reiniciando tunel ngrok..."
configure_ngrok_authtoken
assert_valid_ngrok_config

# Mata cualquier proceso previo que tenga este endpoint, aunque haya sido
# lanzado con flags distintos en una sesion anterior.
mapfile -t EXISTING_PIDS < <(ps -eo pid=,args= | awk -v url="$NGROK_URL" '$0 ~ /ngrok http/ && index($0, url) { print $1 }')

if ((${#EXISTING_PIDS[@]} > 0)); then
  kill "${EXISTING_PIDS[@]}" >/dev/null 2>&1 || true
  sleep 2
fi

nohup ngrok http --url="$NGROK_URL" "$NGROK_UPSTREAM" > "$NGROK_LOG_FILE" 2>&1 &

for _ in {1..20}; do
  if curl -I -fsS --max-time 5 "$NGROK_URL" -H "ngrok-skip-browser-warning: true" >/dev/null 2>&1; then
    echo "Ngrok listo en $NGROK_URL"
    echo "Log: $NGROK_LOG_FILE"
    exit 0
  fi

  sleep 1
done

echo "No pude confirmar que ngrok haya quedado arriba."
echo "Revisa el log en $NGROK_LOG_FILE"
exit 1
