Guilherme Silberfarb Costa
Versão inicial da base de conhecimento
75123b0
Raw History Blame Contribute Delete
2.21 kB
#!/usr/bin/env bash
set -euo pipefail
CARLA_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$CARLA_ROOT"
CARLA_OPEN=true
if [[ "${1:-}" == "--no-open" ]]; then CARLA_OPEN=false; fi
if ! command -v npm >/dev/null; then
echo "Instale Node.js 20.19+ ou 22.12+ (com npm) para iniciar a CARLA." >&2
exit 1
fi
CARLA_PYTHON="${CARLA_PYTHON:-}"
if [[ -z "$CARLA_PYTHON" ]]; then
for candidate in python3.12 python3.13 python3; do
if command -v "$candidate" >/dev/null; then CARLA_PYTHON="$(command -v "$candidate")"; break; fi
done
fi
if [[ -z "$CARLA_PYTHON" ]]; then echo "Instale Python 3.12+ para iniciar." >&2; exit 1; fi
mkdir -p .runtime data
if [[ ! -x .venv/bin/python ]]; then "$CARLA_PYTHON" -m venv .venv; fi
.venv/bin/python scripts/init_dev.py
CARLA_HASH="$(.venv/bin/python -c "import hashlib;from pathlib import Path;print(hashlib.sha256(Path('backend/requirements.lock').read_bytes()).hexdigest())")"
if [[ ! -f .runtime/python-dependencies || "$(cat .runtime/python-dependencies)" != "$CARLA_HASH" ]]; then
.venv/bin/pip install -r backend/requirements.lock
echo "$CARLA_HASH" > .runtime/python-dependencies
fi
CARLA_NPM_HASH="$(.venv/bin/python -c "import hashlib;from pathlib import Path;print(hashlib.sha256(Path('frontend/package-lock.json').read_bytes()).hexdigest())")"
if [[ ! -d frontend/node_modules || ! -f .runtime/node-dependencies || "$(cat .runtime/node-dependencies)" != "$CARLA_NPM_HASH" ]]; then
(cd frontend && npm ci --no-audit --no-fund)
echo "$CARLA_NPM_HASH" > .runtime/node-dependencies
fi
CARLA_PORT="$(.venv/bin/python -c "from dotenv import dotenv_values;print(dotenv_values('.env').get('PORT','8010'))")"
CARLA_PORT="${CARLA_DEV_PORT:-$CARLA_PORT}"
.venv/bin/python -c "import socket,sys;s=socket.socket();r=s.connect_ex(('127.0.0.1',int(sys.argv[1])));s.close();sys.exit('A porta '+sys.argv[1]+' já está ocupada. Use CARLA_DEV_PORT=8011 ./dev.sh' if r==0 else 0)" "$CARLA_PORT"
(cd backend && ../.venv/bin/python -m app.bootstrap)
(cd frontend && npm run build)
if [[ "$CARLA_OPEN" == true ]]; then
exec .venv/bin/python scripts/run_dev.py --port "$CARLA_PORT"
else
exec .venv/bin/python scripts/run_dev.py --port "$CARLA_PORT" --no-open
fi