Ctrl K
ComunidadGuías…

scripts/run.sh

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
#!/bin/bash
echo "=========================================="
echo "  Iniciando OpenACM..."
echo "=========================================="
echo ""

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
cd "$SCRIPT_DIR"

# Verify virtual environment exists
if [ ! -f ".venv/bin/activate" ]; then
    echo "[ERROR] No se encontró la instalación."
    echo ""
    echo "Por favor, ejecuta ./setup.sh primero."
    echo ""
    exit 1
fi

# Verify OpenACM is installed
source .venv/bin/activate
python -c "import openacm" 2>/dev/null
if [ $? -ne 0 ]; then
    echo "[!] OpenACM package not found. Attempting quick reinstall..."
    pip install -e "$SCRIPT_DIR" -q 2>/dev/null
    python -c "import openacm" 2>/dev/null
    if [ $? -ne 0 ]; then
        echo "[ERROR] Reinstall failed. Please run ./setup.sh to repair the installation."
        echo ""
        exit 1
    fi
    echo "[OK] Reinstalled successfully."
fi
echo "[OK] Environment verified."
echo ""

# Build frontend (ensures latest code is always served)
# Load nvm if available (needed when Node was installed via nvm)
export NVM_DIR="${NVM_DIR:-$HOME/.nvm}"
[ -s "$NVM_DIR/nvm.sh" ] && source "$NVM_DIR/nvm.sh"
# Homebrew Node path (macOS)
export PATH="/opt/homebrew/opt/node@20/bin:/usr/local/opt/node@20/bin:$PATH"

if command -v node &>/dev/null && [ -d "frontend" ]; then
    # Check Node version (needs 18.18+ or 20+)
    NODE_VER=$(node -e "process.stdout.write(String(process.versions.node.split('.')[0]))" 2>/dev/null)
    if [ "${NODE_VER:-0}" -lt 18 ] 2>/dev/null; then
        echo "[ERROR] Node.js $(node --version) es muy antiguo. Necesitas v20+."
        echo "        Instala Node.js 20+ y vuelve a correr run.sh"
        echo "        O ejecuta setup.sh para instalarlo automáticamente."
        exit 1
    fi

    echo "[*] Construyendo el frontend..."
    cd frontend
    npm install --silent
    npm run build
    if [ $? -ne 0 ]; then
        echo ""
        echo "[ERROR] El build del frontend falló. Revisa los errores de arriba."
        exit 1
    fi
    cd ..

    # Copy dist to static
    if [ -d "src/openacm/web/static" ]; then
        rm -rf src/openacm/web/static/*
    else
        mkdir -p src/openacm/web/static
    fi
    cp -r frontend/dist/* src/openacm/web/static/
    echo "[OK] Frontend construido y copiado."
    echo ""
else
    echo "[!] Node.js no encontrado, omitiendo build del frontend."
    echo ""
fi

# Start OpenACM
echo "[OK] Todo listo. Iniciando..."
echo ""
python -m openacm

EXIT_CODE=$?
if [ $EXIT_CODE -ne 0 ]; then
    echo ""
    echo "[ERROR] OpenACM terminó con un error (código $EXIT_CODE)."
    echo ""
    echo "Si ves errores de 'module not found', ejecuta ./setup.sh"
    echo "Si el error persiste, revisa que config/.env tenga tus API keys"
    echo ""
fi