Añade launchers de macOS/Linux con un click y hace runtime_control cross-platform
Equivalentes .command (doble-clic en Finder) de los .bat de Windows: - setup_mac.command: bootstrap con un click (detecta Python 3.10+, crea .venv, instala requirements + Chromium de Playwright, copia .env.example -> .env). - start/stop/restart/start_persistent_profile.command: espejo de los .bat, lanzan el server con nohup usando el python del .venv. - mp_common.sh: helper compartido (raíz, venv, banners). runtime_control.py ahora es cross-platform (IS_WINDOWS): lsof/ps/pgrep/kill en POSIX, netstat/PowerShell/taskkill en Windows. _kill_tree_posix mata el árbol padre+worker de uvicorn con SIGTERM. .venv/ añadido a .gitignore. Docs actualizadas (CLAUDE.md, AGENTS.md, PLAYWRIGHT_SESSION.md). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Executable
+60
@@ -0,0 +1,60 @@
|
||||
#!/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
|
||||
Reference in New Issue
Block a user