@_default:
	just --choose

_ensure_git_clean:
	git diff --exit-code
	git diff --cached --exit-code
	# git ls-files --others --exclude-standard | grep -q . && echo "Untracked files found" && exit 1

@doc *args:
	test -d _gh-pages/
	rm -r _gh-pages/* || true
	uv run pydoctor \
		--html-out _gh-pages/ \
		--theme readthedocs --docformat=google \
		--warnings-as-errors \
		--project-name "nwn-message" \
		--project-version "$(grep -oP '(?<=version = ")[^"]*' pyproject.toml)" \
		--project-url "https://pypi.org/project/nwn-message/" \
		--html-viewsource-base "https://github.com/niv/nwn-message.py/blob/master/" \
		src/nwn_message {{args}}

publish-docs: _ensure_git_clean doc
	cd _gh-pages && git add . && git commit -m "update docs" && git push

test *args:
	uv run pytest {{args}}

fmt:
	uv tool run black .

build:
  rm dist/* || true
  uv build

# TODO: ensure tagged, ensure master,
#       version is set in pyproject.toml
publish: _ensure_git_clean doc build # && publish-docs
  test "$(git rev-parse --abbrev-ref HEAD)" = "master" || (echo "Not on master branch"; exit 1)
  # git push
  # uv publish --token $(netrc get pypi.org | cut -d: -f2) -v

# release version:
# 	#!/bin/bash
# 	set -ex
# 	uv sync
# 	version=$$(grep -oP '(?<=version = ")[^"]*' pyproject.toml)
# 	just _ensure_git_clean
# 	git tag -a "$$version" -m "$$version"
# 	git tag -a "v$(grep -oP '(?<=version = ")[^"]*' pyproject.toml)" -m "v$(grep -oP '(?<=version = ")[^"]*' pyproject.toml)"
# 	uv publish --token $(netrc get pypi.org | cut -d: -f2) -v
# 1: ensure git clean
# 2: ensure version is set in pyproject.toml
# 3: make sure git commit and tag exists?
# 4: clean dist/
# 5: uv build
# ensure the zip is correct
# 6: uv publish
# 7: publish-docs

# release:
# 	#!/bin/bash
# 	set -ex
# 	version=$$(grep -oP '(?<=version = ")[^"]*' pyproject.toml)
# 	uv sync
# 	just _ensure_git_clean
# 	git tag -a "v$$version" -m "v$$version"
#  uv publish --token $(netrc get pypi.org | cut -d: -f2) -v
# 	# poetry version patch
# 	# git add pyproject.toml
# 	# git commit -m "bump version"
# 	# git tag -a "v$(poetry version -s)" -m "v$(poetry version -s)"
# 	# git push
# 	# git push --tags
# 	# poetry build
# 	# poetry publish
