2a37a4ffbf
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>
59 lines
2.2 KiB
Bash
Executable File
59 lines
2.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# ---------------------------------------------------------------------------
|
|
# start_persistent_profile.command — Equivalente macOS/Linux de
|
|
# start_persistent_profile.bat.
|
|
# Arranca el servidor con el PERFIL PERSISTENTE de Chrome para Playwright
|
|
# (más estable que la sesión shared). Todos los scripts ghl_browser_*.py usarán
|
|
# generated/browser/profile en lugar de generated/browser/session.json.
|
|
# ---------------------------------------------------------------------------
|
|
set -euo pipefail
|
|
source "$(dirname "${BASH_SOURCE[0]}")/mp_common.sh"
|
|
|
|
banner "MP Manager - Modo Perfil Persistente Bucéfalo"
|
|
|
|
PY="$(require_venv)" || { hold_window; exit 1; }
|
|
|
|
# --- Pre-vuelo -------------------------------------------------------------
|
|
set +e
|
|
"$PY" runtime_control.py preflight
|
|
PRE=$?
|
|
set -e
|
|
if [ "$PRE" -eq 1 ]; then
|
|
echo
|
|
info "No se relanza. Usa restart.command para reiniciar el modo persistente."
|
|
hold_window
|
|
exit 1
|
|
fi
|
|
|
|
# --- Perfil persistente ----------------------------------------------------
|
|
export GHL_BROWSER_PROFILE_DIR="$PROJECT_DIR/generated/browser/profile"
|
|
info "GHL_BROWSER_PROFILE_DIR=$GHL_BROWSER_PROFILE_DIR"
|
|
|
|
if [ ! -d "$GHL_BROWSER_PROFILE_DIR" ]; then
|
|
echo
|
|
warn "El perfil aún no existe. La primera vez tendrás que generar la sesión:"
|
|
echo " 1. Ve a la pestaña Workflows y dale a \"Renovar sesión Bucéfalo\"."
|
|
echo " 2. Inicia sesión + MFA en la ventana del navegador."
|
|
echo " 3. La sesión se persistirá automáticamente en este directorio."
|
|
echo
|
|
fi
|
|
|
|
info "Iniciando servidor FastAPI con perfil persistente activo..."
|
|
mkdir -p generated/runtime generated/logs
|
|
echo "persistent" > generated/runtime/last_mode
|
|
|
|
LOG="$PROJECT_DIR/generated/logs/server.out"
|
|
nohup "$PY" "$PROJECT_DIR/main.py" >> "$LOG" 2>&1 &
|
|
disown || true
|
|
|
|
echo
|
|
echo "==================================================="
|
|
echo " Servidor iniciado en modo perfil persistente."
|
|
echo " Logs: generated/logs/server.out"
|
|
echo " Para detener: stop.command"
|
|
echo
|
|
echo " NOTA: en este modo no puedes correr dos scripts de"
|
|
echo " Playwright al mismo tiempo contra el mismo perfil."
|
|
echo "==================================================="
|
|
hold_window
|