UV := uv .PHONY: format lint typecheck test ci-check build package-version publish-gitea clean-branches format: $(UV) run ruff format . $(UV) run ruff check . --fix lint: $(UV) run ruff check . typecheck: $(UV) run mypy --config-file pyproject.toml test: $(UV) run pytest ci-check: $(UV) run ruff check . $(UV) run mypy --config-file pyproject.toml $(UV) run deptry . build: $(UV) build package-version: $(UV) run python -c "import tomllib; from pathlib import Path; print(tomllib.loads(Path('pyproject.toml').read_text(encoding='utf-8'))['project']['version'])" publish-gitea: @test -n "$$GITEA_PYPI_REPOSITORY_URL" || (echo "GITEA_PYPI_REPOSITORY_URL is required" && exit 1) @test -n "$$GITEA_PACKAGE_USERNAME" || (echo "GITEA_PACKAGE_USERNAME is required" && exit 1) @test -n "$$GITEA_PACKAGE_TOKEN" || (echo "GITEA_PACKAGE_TOKEN is required" && exit 1) @echo "Publishing version $$($(MAKE) --no-print-directory package-version)" $(UV) build $(UV) run --with twine twine check dist/* TWINE_REPOSITORY_URL="$$GITEA_PYPI_REPOSITORY_URL" \ TWINE_USERNAME="$$GITEA_PACKAGE_USERNAME" \ TWINE_PASSWORD="$$GITEA_PACKAGE_TOKEN" \ $(UV) run --with twine twine upload --skip-existing dist/* clean-branches: ifeq ($(OS),Windows_NT) @git fetch --prune @cmd /C "for /f \"tokens=1\" %%i in ('git branch -vv ^| findstr ": gone]"') do git branch -D %%i" || ver > nul else git fetch --prune git branch -vv | grep ': gone]' | awk '{print $$1}' | xargs -r git branch -D endif