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
+83
@@ -0,0 +1,83 @@
|
||||
#!/usr/bin/env bash
|
||||
# ---------------------------------------------------------------------------
|
||||
# setup_mac.command — Inicialización con UN CLICK de MP Manager en macOS/Linux.
|
||||
#
|
||||
# Equivalente "de arranque" que NO existe en Windows (allá se asume Python en el
|
||||
# PATH). En macOS el Python del sistema suele ser 3.9 y está bloqueado para pip
|
||||
# (PEP 668), así que aquí:
|
||||
# 1. Detecta un Python 3.10+ del sistema.
|
||||
# 2. Crea un entorno virtual aislado en .venv (no toca el Python del sistema).
|
||||
# 3. Instala las dependencias de requirements.txt.
|
||||
# 4. Instala el navegador Chromium para Playwright.
|
||||
# 5. Crea el archivo .env a partir de .env.example si no existe.
|
||||
#
|
||||
# Es idempotente: puedes volver a ejecutarlo para actualizar dependencias.
|
||||
# Doble clic en Finder para correrlo.
|
||||
# ---------------------------------------------------------------------------
|
||||
set -euo pipefail
|
||||
source "$(dirname "${BASH_SOURCE[0]}")/mp_common.sh"
|
||||
|
||||
banner "MP Manager - Configuración inicial (macOS / Linux)"
|
||||
|
||||
# --- 1. Buscar Python 3.10+ del sistema -----------------------------------
|
||||
info "Buscando un Python ${PY_MIN_MAJOR}.${PY_MIN_MINOR}+ en el sistema..."
|
||||
SYS_PY="$(find_system_python || true)"
|
||||
if [ -z "$SYS_PY" ]; then
|
||||
err "No se encontró Python ${PY_MIN_MAJOR}.${PY_MIN_MINOR} o superior."
|
||||
echo
|
||||
echo " Instálalo y reintenta. La forma más simple en macOS:"
|
||||
echo " brew install python@3.12"
|
||||
echo " (o descárgalo de https://www.python.org/downloads/macos/)"
|
||||
hold_window
|
||||
exit 1
|
||||
fi
|
||||
ok "Python encontrado: $SYS_PY ($("$SYS_PY" --version 2>&1))"
|
||||
|
||||
# --- 2. Crear / reutilizar el entorno virtual ------------------------------
|
||||
if [ -x "$VENV_PY" ]; then
|
||||
info "Entorno virtual ya existe en .venv (se reutiliza)."
|
||||
else
|
||||
info "Creando entorno virtual en .venv ..."
|
||||
"$SYS_PY" -m venv "$VENV_DIR"
|
||||
ok "Entorno virtual creado."
|
||||
fi
|
||||
|
||||
# --- 3. Instalar dependencias ---------------------------------------------
|
||||
info "Actualizando pip ..."
|
||||
"$VENV_PY" -m pip install --upgrade pip >/dev/null
|
||||
|
||||
info "Instalando dependencias de requirements.txt (puede tardar) ..."
|
||||
"$VENV_PY" -m pip install -r "$PROJECT_DIR/requirements.txt"
|
||||
ok "Dependencias de Python instaladas."
|
||||
|
||||
# --- 4. Navegador de Playwright -------------------------------------------
|
||||
# Los scripts ghl_browser_*.py automatizan la UI web con Chromium. Sin esto
|
||||
# fallarían al lanzar el navegador.
|
||||
info "Instalando Chromium para Playwright ..."
|
||||
if "$VENV_PY" -m playwright install chromium; then
|
||||
ok "Chromium instalado."
|
||||
else
|
||||
warn "No se pudo instalar Chromium para Playwright."
|
||||
warn "El dashboard funcionará; solo los scripts de navegador (workflows) fallarán."
|
||||
warn "Puedes reintentar luego con: .venv/bin/python -m playwright install chromium"
|
||||
fi
|
||||
|
||||
# --- 5. Archivo .env -------------------------------------------------------
|
||||
if [ -f "$PROJECT_DIR/.env" ]; then
|
||||
info "Archivo .env ya existe (no se sobrescribe)."
|
||||
elif [ -f "$PROJECT_DIR/.env.example" ]; then
|
||||
cp "$PROJECT_DIR/.env.example" "$PROJECT_DIR/.env"
|
||||
ok "Creado .env a partir de .env.example — revísalo y completa tus credenciales."
|
||||
else
|
||||
warn "No hay .env.example; omito la creación de .env."
|
||||
fi
|
||||
|
||||
echo
|
||||
banner "Configuración completada"
|
||||
echo " Para arrancar el servidor: doble clic en start.command"
|
||||
echo " Para detenerlo: doble clic en stop.command"
|
||||
echo " Para reiniciarlo: doble clic en restart.command"
|
||||
echo
|
||||
echo " La primera vez, macOS puede pedir permiso para abrir un .command"
|
||||
echo " descargado: clic derecho > Abrir, o Ajustes > Privacidad y seguridad."
|
||||
hold_window
|
||||
Reference in New Issue
Block a user