docs_build := "docs/_build"
sphinx_opts:= "-d " + docs_build + "/doctrees docs"

# Default target executed when no arguments are given.
[private]
default:
  @just --list

build-libbson:
    uv sync --no-install-project --dev --frozen
    bash build-libbson.sh

build:
    uv sync --dev --reinstall-package pymongoarrow

import-check:
    uv run python -c "from pymongoarrow.lib import libbson_version"

benchmark-install *args:
    rm -rf .venv
    python3 -m venv .venv
    .venv/bin/pip install asv virtualenv
    .venv/bin/pip install -e ".[test,test-polars,test-pandas]"
    .venv/bin/asv machine --yes

benchmark-ci *args:
    [ -f .venv/bin/asv ] || just benchmark-install
    .venv/bin/asv continuous --split --show-stderr --factor 1.3 {{args}}

benchmark *args:
    [ -f .venv/bin/asv ] || just benchmark-install
    .venv/bin/asv run {{args}}

install:
    just build-libbson
    just build
    uv run pre-commit install

test *args:
    uv run --no-dev --extra test --extra test-polars --extra test-pandas pytest {{args}}

test-no-optional *args:
    uv run --no-dev --extra test pytest {{args}}

lint:
    uv sync --no-install-project --dev --frozen
    uv run --no-project pre-commit run --hook-stage manual --all-files

docs:
    uv sync --no-install-project --group docs --frozen
    uv run --no-project sphinx-build -T -b html {{sphinx_opts}} {{docs_build}}/html

docs-serve:
    uv sync --no-install-project --group docs --group dev --frozen
    urn run --no-project sphinx-autobuild --watch ./pymongoarrow docs {{docs_build}}/html

docs-linkcheck *args:
    uv sync --no-install-project --group docs --frozen
    PYTHONHASHSEED=0 uv run --no-project python -m sphinx -q -b linkcheck docs {{docs_build}}/linkcheck {{args}}
