PIPENV := pipenv run PYTESTARGS ?= -x -vvl BLACKARGS := --line-length 128 --check --diff .PHONY: help help: @echo "Make targets:\n" @$(MAKE) -pRrq -f $(lastword $(MAKEFILE_LIST)) : 2>/dev/null | awk -v RS= -F: '/^# File/,/^# Finished Make data base/ {if ($$1 !~ "^[#.]") {print $$1}}' | sort | egrep -v -e '^[^[:alnum:]]' -e '^$@$$' ################################################################################ # # Environment Setup # ################################################################################ .PHONY: setup setup-dev Pipfile.lock: Pipfile pipenv lock requirements.txt: Pipfile.lock pipenv lock -r > $@ setup.done: Pipfile.lock pipenv sync touch setup.done setup-dev.done: Pipfile.lock setup.done pipenv sync --dev touch setup-dev.done setup: setup.done setup-dev: setup-dev.done ################################################################################ # # Release management # ################################################################################ .PHONY: publish release release-major release-micro release: setup-dev.done $(PIPENV) bumpversion --verbose minor release-major: setup-dev.done $(PIPENV) bumpversion --verbose major release-micro: setup-dev.done $(PIPENV) bumpversion --verbose patch publish: git push -v --progress git push -v --progress --tags ################################################################################ # # Checking and Linting # ################################################################################ .PHONY: black check cruft-check lint linting pytest test check: cruft-check lint test cruft-check: cruft check cruft diff --exit-code test: pytest pytest: setup-dev.done $(PIPENV) pytest ${PYTESTARGS} . black: setup-dev.done $(PIPENV) black ${BLACKARGS} . lint: linting linting: black ################################################################################ # # Custom options # ################################################################################ .PHONY: clean clean: rm -rvf tmp