#!/usr/bin/env bash
set -euo pipefail

docs=0
fast=0
for arg in "$@"; do
  case "$arg" in
    --docs) docs=1 ;;
    --fast) fast=1 ;;
    *)
      echo "usage: $0 [--fast] [--docs]" >&2
      exit 2
      ;;
  esac
done

uv run ruff format src tests
uv run ruff check src tests
uv run ty check src tests
# xdist workers share nothing but the Postgres test database, so run
# serially when APIPI_TEST_DATABASE_URL points at one.
workers=(-n auto)
if [[ -n "${APIPI_TEST_DATABASE_URL:-}" ]]; then
  workers=()
fi
if [[ "$fast" -eq 1 ]]; then
  uv run pytest "${workers[@]}" -m "not slow"
else
  uv run pytest "${workers[@]}"
fi
if [[ "$docs" -eq 1 ]]; then
  uv run --no-project --with-requirements requirements-docs.txt mkdocs build --strict
fi
