66 lines
1.9 KiB
Bash
Executable File
66 lines
1.9 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
REPO_ROOT="$(cd "$(dirname "$0")"/.. && pwd)"
|
|
BACKEND_DIR="$REPO_ROOT/backend"
|
|
VENV_DIR="$REPO_ROOT/.venv"
|
|
PYTHON_BIN="python3"
|
|
|
|
# Allow override: USE_SYSTEM_PYTHON=1 to skip venv
|
|
USE_SYSTEM_PYTHON="${USE_SYSTEM_PYTHON:-0}"
|
|
# CLEAN=1 to recreate venv
|
|
CLEAN="${CLEAN:-0}"
|
|
|
|
echo "[backend] repo: $REPO_ROOT"
|
|
echo "[backend] dir: $BACKEND_DIR"
|
|
|
|
echo "[backend] checking Python..."
|
|
if command -v python3 >/dev/null 2>&1; then
|
|
PYTHON_BIN="$(command -v python3)"
|
|
elif command -v python >/dev/null 2>&1; then
|
|
PYTHON_BIN="$(command -v python)"
|
|
else
|
|
echo "[backend] ERROR: python3/python not found" >&2
|
|
exit 1
|
|
fi
|
|
|
|
echo "[backend] python: $PYTHON_BIN ($("$PYTHON_BIN" -V))"
|
|
|
|
if [[ "$USE_SYSTEM_PYTHON" == "1" ]]; then
|
|
echo "[backend] using system Python (no venv)"
|
|
else
|
|
if [[ "$CLEAN" == "1" && -d "$VENV_DIR" ]]; then
|
|
echo "[backend] CLEAN=1 -> removing existing venv: $VENV_DIR"
|
|
rm -rf "$VENV_DIR"
|
|
fi
|
|
if [[ ! -d "$VENV_DIR" ]]; then
|
|
echo "[backend] creating venv: $VENV_DIR"
|
|
"$PYTHON_BIN" -m venv "$VENV_DIR"
|
|
fi
|
|
# Activate venv
|
|
# shellcheck disable=SC1091
|
|
source "$VENV_DIR/bin/activate"
|
|
echo "[backend] venv activated: $VIRTUAL_ENV"
|
|
echo "[backend] upgrading pip/setuptools/wheel"
|
|
python -m pip install --upgrade pip setuptools wheel
|
|
fi
|
|
|
|
REQ_FILE="$BACKEND_DIR/requirements.txt"
|
|
if [[ ! -f "$REQ_FILE" ]]; then
|
|
echo "[backend] ERROR: requirements.txt not found at $REQ_FILE" >&2
|
|
exit 1
|
|
fi
|
|
|
|
echo "[backend] installing requirements: $REQ_FILE"
|
|
pip install -r "$REQ_FILE"
|
|
|
|
# Show versions
|
|
echo "[backend] python version: $(python -V)"
|
|
echo "[backend] pip version: $(python -m pip -V)"
|
|
if command -v uvicorn >/dev/null 2>&1; then
|
|
echo "[backend] uvicorn version: $(python -c 'import uvicorn,sys; print(uvicorn.__version__)' || echo unknown)"
|
|
else
|
|
echo "[backend] uvicorn not found; you may need it for dev server"
|
|
fi
|
|
|
|
echo "[backend] setup completed." |