# neuronetz-gateway — task runner.
#
# Requires `just` (https://github.com/casey/just) and `uv`
# (https://github.com/astral-sh/uv) on the host.
#
#   just            # list available targets
#   just dev        # run postgres + redis + gateway locally (dev stack)
#   just test       # run the test suite with coverage
#   just lint       # ruff check
#   just typecheck  # mypy --strict
#   just migrate    # apply alembic migrations against DATABASE_URL

set dotenv-load := true

# uv runs commands inside the project's managed environment.
uv := "uv"

# Show the list of targets (default).
default:
    @just --list

# Sync dependencies into the local uv-managed virtualenv (incl. dev extras).
install:
    {{uv}} sync --extra dev

# Run the dev stack: postgres + redis + gateway (no caddy, no ollama).
dev:
    docker compose -f docker-compose.dev.yml up --build

# Run the test suite with coverage.
test:
    {{uv}} run pytest

# Lint with ruff.
lint:
    {{uv}} run ruff check .

# Static type checking (strict).
typecheck:
    {{uv}} run mypy --strict src

# Apply database migrations to head.
migrate:
    {{uv}} run alembic upgrade head

# Security lint.
bandit:
    {{uv}} run bandit -q -r src

# Dependency vulnerability audit.
audit:
    {{uv}} run pip-audit

# Bring the FULL production stack up (caddy + gateway + postgres + redis + ollama).
compose-up:
    docker compose up -d --build

# Tear the production stack down.
compose-down:
    docker compose down
