PACKAGE := $(shell grep '^name' pyproject.toml | sed 's/name = "\(.*\)"/\1/')
UV      := uv --directory ../../
PYTHON  := ../../.venv/bin/python

-include .env
export

.PHONY: version patch minor major requirements publish

version:
	@$(PYTHON) -m hatchling version

requirements:
	@$(UV) export --package $(PACKAGE) --no-dev --no-hashes -o requirements.txt
	@echo "✓ requirements.txt updated"

publish:
	@$(UV) build --package $(PACKAGE)
	@$(UV) publish
	@echo "✓ Published $(PACKAGE) to PyPI"

patch:
	@$(PYTHON) -m hatchling version patch
	@$(MAKE) _release

minor:
	@$(PYTHON) -m hatchling version minor
	@$(MAKE) _release

major:
	@$(PYTHON) -m hatchling version major
	@$(MAKE) _release

_release:
	$(eval NEW := $(shell $(PYTHON) -m hatchling version))
	@git add src/ .github/ 2>/dev/null; true
	@git commit -m "release: v$(NEW)"
	@git tag "v$(NEW)"
	@git push && git push --tags
	@echo "✓ Released $(PACKAGE) v$(NEW)"
