hooks:
	pre-commit install

EVAL ?=
check:
	uv run ruff format
	uv run ruff check --fix
	uv run --extra test mypy src tests
	uv run python tools/generate_readmes.py --create-missing-readmes
	uv run python tools/generate_asset_manifest.py
	uv run python tools/check_unlisted_evals.py
	uv run python tools/check_changelog.py
	uv lock --check
	pre-commit run markdownlint-fix --all-files
ifneq ($(EVAL),)
	uv run python tools/run_autolint.py $(EVAL)
endif

TEST_ARGS ?=
TEST_EXTRAS ?= test
TEST_GROUPS ?=
test:
	uv run \
		$(addprefix --extra ,$(TEST_EXTRAS)) \
		$(addprefix --group ,$(TEST_GROUP)) \
		pytest $(TEST_ARGS)

docs:
	uv run --extra doc quarto render docs

DRY_RUN ?= true
CLEAN_ARGS ?=
clean:
ifeq ($(DRY_RUN),false)
	uv run python ./tools/clean.py --no-dry-run $(CLEAN_ARGS)
else
	uv run python ./tools/clean.py $(CLEAN_ARGS)
endif

.PHONY: hooks check test clean docs
