#!/usr/bin/env bash # --------------------------------------------------------------------------- # start.command — Equivalente macOS/Linux de start.bat. # Arranca el servidor MP Manager en modo NORMAL. # 1. Verifica que exista el venv (creado por setup_mac.command). # 2. Pre-vuelo: rechaza relanzar si ya hay una instancia; avisa si el puerto # 8000 lo tiene otro proyecto (main.py salta al siguiente libre). # 3. Deja huella del modo (last_mode=normal) para que restart.command sepa # cómo relanzar. # 4. Lanza FastAPI en segundo plano (nohup) con la ruta ABSOLUTA a main.py # —para que runtime_control pueda identificar el proceso— y registra logs. # main.py escribe server_info.json con el puerto real y abre el navegador solo. # --------------------------------------------------------------------------- set -euo pipefail source "$(dirname "${BASH_SOURCE[0]}")/mp_common.sh" banner "MP Manager - Iniciando Servidor Monte Providencia" PY="$(require_venv)" || { hold_window; exit 1; } # --- Pre-vuelo (misma lógica que Windows, vía runtime_control.py) ---------- set +e "$PY" runtime_control.py preflight PRE=$? set -e if [ "$PRE" -eq 1 ]; then echo info "No se relanza. Si quieres reiniciar usa restart.command." hold_window exit 1 fi if [ "$PRE" -eq 2 ]; then echo info "Continuando: MP Manager buscará el siguiente puerto libre." echo fi # --- Huella de modo activo ------------------------------------------------- mkdir -p generated/runtime echo "normal" > generated/runtime/last_mode # --- Lanzar servidor en segundo plano -------------------------------------- mkdir -p generated/logs LOG="$PROJECT_DIR/generated/logs/server.out" info "Iniciando servidor FastAPI..." nohup "$PY" "$PROJECT_DIR/main.py" >> "$LOG" 2>&1 & disown || true echo echo "===================================================" echo " El servidor se está iniciando en segundo plano." echo " El navegador se abrirá solo en el puerto correcto" echo " (8000 o el siguiente libre)." echo echo " Logs: generated/logs/server.out" echo " Para detener: stop.command" echo " Reiniciar: restart.command" echo "===================================================" hold_window