CCI_OLLAMA_CODE_CHAT / start_full.sh
jeanmarcocruz207's picture
Upload 29 files
3754f8b verified
raw
history blame
2.79 kB
#!/bin/bash
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