.PHONY: clean upgrade requirements quality test help
# Generates a help message. Borrowed from https://github.com/pydanny/cookiecutter-djangopackage.
help: ## display this help message
	@echo "Please use \`make <target>\` where <target> is one of"
	@perl -nle'print $& if m{^[\.a-zA-Z_-]+:.*?## .*$$}' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m  %-25s\033[0m %s\n", $$1, $$2}'

clean: ## delete generated byte code and coverage reports
	find . -name '*.pyc' -delete
	find . -name '__pycache__' -type d -exec rm -rf {} ';' || true
	rm -rf coverage htmlcov
	rm -rf assets
	rm -rf pii_report

upgrade: ## update uv.lock and regenerate uv constraints
	uv run --with edx-lint edx_lint write_uv_constraints pyproject.toml
	uv lock --upgrade

requirements: ## install development environment requirements
	uv sync --group dev

quality: ## run linting checks
	uv run --group quality flake8 src/crowdsourcehinter/

test-python: clean ## run tests and generate coverage report
	uv run --group test python -Wd -m pytest; code=$$?; [ $$code -eq 5 ] && exit 0 || exit $$code

test: test-python ## run tests