scripts/run.sh
Rama main · réplica de lectura del repositorio original.
#!/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