.PHONY: all
all: .venv lint pylint test

.venv:
	@python3 -m venv .venv
	@.venv/bin/pip install -e ".[dev]"
	@touch .venv

.PHONY: lint
lint: .venv
	@.venv/bin/ruff check $(if $(FIX),--fix)
	@.venv/bin/ruff format --diff
	@.venv/bin/ruff check --select I

.PHONY: pylint
pylint: .venv
	@.venv/bin/pylint --jobs 0 --disable=E0401,E0213 src/ tests/ -E

.PHONY: format
format: .venv
	@.venv/bin/ruff format
	@.venv/bin/ruff check --select I,F401,F541 --fix

.PHONY: test
test: .venv
	@.venv/bin/pytest -q

.PHONY: build
build: .venv
	@rm -rf dist
	@.venv/bin/python -m build

.PHONY: publish
publish: build
	@.venv/bin/twine upload dist/*

.PHONY: clean
clean:
	@rm -rf .venv build dist *.egg-info
	@find . -name "__pycache__" -type d -exec rm -rf {} +
	@find . -name "*.pyc" -delete
