Spaces:
Runtime error
Runtime error
| set -e | |
| PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" | |
| VENV_DIR="$PROJECT_DIR/.venv" | |
| FRONTEND_DIR="$PROJECT_DIR/frontend" | |
| echo "🔧 Preparando entorno para Llama Dev Suite PRO v5 (modo completo)..." | |
| if [ ! -d "$VENV_DIR" ]; then | |
| echo "📦 Creando entorno virtual en $VENV_DIR" | |
| python3 -m venv "$VENV_DIR" | |
| fi | |
| source "$VENV_DIR/bin/activate" | |
| echo "📚 Instalando dependencias Python (FastAPI, Gradio, etc.)" | |
| pip install -r "$PROJECT_DIR/requirements.txt" | |
| hash -r 2>/dev/null || true | |
| NPM_BIN="$(command -v npm 2>/dev/null || true)" | |
| if [ -z "$NPM_BIN" ] && [ -x "/usr/bin/npm" ]; then | |
| NPM_BIN="/usr/bin/npm" | |
| fi | |
| if [ -z "$NPM_BIN" ] && [ -x "/usr/local/bin/npm" ]; then | |
| NPM_BIN="/usr/local/bin/npm" | |
| fi | |
| if [ -z "$NPM_BIN" ] && [ -x "/snap/bin/npm" ]; then | |
| NPM_BIN="/snap/bin/npm" | |
| fi | |
| if [ -z "$NPM_BIN" ]; then | |
| if [ -s "$HOME/.nvm/nvm.sh" ]; then | |
| echo "ℹ️ Detectado nvm — cargándolo para exponer npm..." | |
| export NVM_DIR="$HOME/.nvm" | |
| # shellcheck disable=SC1090 | |
| . "$NVM_DIR/nvm.sh" | |
| hash -r 2>/dev/null || true | |
| NPM_BIN="$(command -v npm 2>/dev/null || true)" | |
| fi | |
| fi | |
| if [ -z "$NPM_BIN" ]; then | |
| echo "❌ npm no está disponible en el PATH actual." | |
| echo " PATH=$PATH" | |
| if [ -x "/usr/lib/node_modules/npm/bin/npm-cli.js" ]; then | |
| echo " ⚠️ npm-cli.js encontrado pero falta ejecutable 'npm'." | |
| fi | |
| echo " Verifica que Node.js esté instalado y que el comando 'npm' esté en tu PATH." | |
| echo " Sugerencias:" | |
| echo " - Linux: reinstala con 'sudo apt install nodejs npm' o usa nvm" | |
| echo " - macOS: 'brew install node'" | |
| echo " - Windows: https://nodejs.org/" | |
| echo " Luego vuelve a ejecutar ./start_full.sh" | |
| exit 1 | |
| fi | |
| echo "🔍 npm detectado en: $NPM_BIN" | |
| if [ ! -d "$FRONTEND_DIR/node_modules" ]; then | |
| echo "📦 Instalando dependencias de frontend (npm install)" | |
| (cd "$FRONTEND_DIR" && "$NPM_BIN" install) | |
| fi | |
| cleanup() { | |
| echo -e "\n🧹 Deteniendo servicios..." | |
| if [ -n "$BACKEND_PID" ] && kill -0 "$BACKEND_PID" 2>/dev/null; then | |
| kill "$BACKEND_PID" 2>/dev/null || true | |
| fi | |
| if [ -n "$FRONTEND_PID" ] && kill -0 "$FRONTEND_PID" 2>/dev/null; then | |
| kill "$FRONTEND_PID" 2>/dev/null || true | |
| fi | |
| wait || true | |
| echo "✅ Servicios detenidos." | |
| } | |
| trap cleanup EXIT | |
| echo "🚀 Iniciando backend FastAPI en http://127.0.0.1:8000" | |
| "$VENV_DIR/bin/uvicorn" backend.main:app --host 127.0.0.1 --port 8000 --reload & | |
| BACKEND_PID=$! | |
| echo "🎨 Iniciando frontend React en http://127.0.0.1:5173" | |
| (cd "$FRONTEND_DIR" && "$NPM_BIN" run dev -- --host 127.0.0.1 --port 5173) & | |
| FRONTEND_PID=$! | |
| echo "" | |
| echo "🟢 Todo listo. Abre http://127.0.0.1:5173 para usar la app completa." | |
| echo "ℹ️ Mantén esta ventana abierta. Pulsa Ctrl+C para detener ambos servicios." | |
| wait | |