Spaces:
Sleeping
Sleeping
| set -euo pipefail | |
| ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" | |
| VENV_PYTHON="$ROOT_DIR/.venv/bin/python" | |
| BACKEND_PID="" | |
| FRONTEND_PID="" | |
| find_homebrew_python() { | |
| if [[ -x "/opt/homebrew/opt/python@3.14/bin/python3" ]]; then | |
| printf '%s\n' "/opt/homebrew/opt/python@3.14/bin/python3" | |
| elif [[ -x "/opt/homebrew/bin/python3" ]]; then | |
| printf '%s\n' "/opt/homebrew/bin/python3" | |
| else | |
| command -v python3 | |
| fi | |
| } | |
| if [[ ! -x "$VENV_PYTHON" ]]; then | |
| PYTHON_BIN="$(find_homebrew_python)" | |
| echo "Criando .venv com: $PYTHON_BIN" | |
| "$PYTHON_BIN" -m venv "$ROOT_DIR/.venv" | |
| "$VENV_PYTHON" -m pip install --upgrade pip | |
| "$VENV_PYTHON" -m pip install -r "$ROOT_DIR/requirements.txt" | |
| fi | |
| if [[ ! -d "$ROOT_DIR/frontend/node_modules" ]]; then | |
| echo "Instalando dependencias do frontend..." | |
| npm install --prefix "$ROOT_DIR/frontend" | |
| fi | |
| cleanup() { | |
| echo | |
| echo "Encerrando backend e frontend..." | |
| terminate_tree "$BACKEND_PID" | |
| terminate_tree "$FRONTEND_PID" | |
| } | |
| trap cleanup EXIT INT TERM | |
| terminate_tree() { | |
| local pid="${1:-}" | |
| local child | |
| [[ -n "$pid" ]] || return 0 | |
| while read -r child; do | |
| terminate_tree "$child" | |
| done < <(pgrep -P "$pid" 2>/dev/null || true) | |
| kill "$pid" 2>/dev/null || true | |
| } | |
| echo "Subindo backend em http://localhost:${PORT:-8000}" | |
| "$VENV_PYTHON" "$ROOT_DIR/app.py" & | |
| BACKEND_PID=$! | |
| echo "Subindo frontend em http://localhost:5173" | |
| ( | |
| cd "$ROOT_DIR/frontend" | |
| npm run dev -- --host 0.0.0.0 | |
| ) & | |
| FRONTEND_PID=$! | |
| wait "$BACKEND_PID" "$FRONTEND_PID" | |