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>
84 lines
3.5 KiB
Bash
Executable File
84 lines
3.5 KiB
Bash
Executable File
#!/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
|