cookiecutter-flit

A Cookiecutter template for a Flit package
git clone git://git.danielmoch.com/cookiecutter-flit.git
Log | Files | Refs | LICENSE

commit 934064944e6f8f6a29fbe129f5f6fe39ac950bbf
parent 6fc263e3530f833cac85fae0e9c70cecbd960a2d
Author: Daniel Moch <daniel@danielmoch.com>
Date:   Sun, 19 Aug 2018 08:46:30 -0400

Add Makefile

Diffstat:
A{{cookiecutter.project_slug}}/Makefile | 77+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 77 insertions(+), 0 deletions(-)

diff --git a/{{cookiecutter.project_slug}}/Makefile b/{{cookiecutter.project_slug}}/Makefile @@ -0,0 +1,77 @@ +.PHONY: clean clean-test clean-pyc clean-build help +.DEFAULT_GOAL := help + +define BROWSER_PYSCRIPT +import os, webbrowser, sys + +try: + from urllib import pathname2url +except: + from urllib.request import pathname2url + +webbrowser.open("file://" + pathname2url(os.path.abspath(sys.argv[1]))) +endef +export BROWSER_PYSCRIPT + +define PRINT_HELP_PYSCRIPT +import re, sys + +for line in sys.stdin: + match = re.match(r'^([a-zA-Z_-]+):.*?## (.*)$$', line) + if match: + target, help = match.groups() + print("%-20s %s" % (target, help)) +endef +export PRINT_HELP_PYSCRIPT + +BROWSER := python -c "$$BROWSER_PYSCRIPT" +{%- if cookiecutter.use_pipenv == 'y' %} +PIPENV := pipenv run +{%- else %} +PIPENV := +{%- endif %} + +help: + @python -c "$$PRINT_HELP_PYSCRIPT" < $(MAKEFILE_LIST) + +clean: clean-build clean-pyc clean-test ## remove all build, test, coverage and Python artifacts + +clean-build: ## remove build artifacts + rm -fr build/ + rm -fr dist/ + rm -fr .eggs/ + find . -name '*.egg-info' -exec rm -fr {} + + find . -name '*.egg' -exec rm -f {} + + +clean-pyc: ## remove Python file artifacts + find . -name '*.pyc' -exec rm -f {} + + find . -name '*.pyo' -exec rm -f {} + + find . -name '*~' -exec rm -f {} + + find . -name '__pycache__' -exec rm -fr {} + + +clean-test: ## remove test and coverage artifacts + rm -f .coverage + rm -fr htmlcov/ + rm -fr .pytest_cache + +lint: ## check style with flake8 + $(PIPENV) pylint --rcfile tests/pylintrc {{ cookiecutter.project_slug }} tests + +test: ## run tests quickly with the default Python + $(PIPENV) python -m pytest + +coverage: ## check code coverage quickly with the default Python + $(PIPENV) coverage run --source {{ cookiecutter.project_slug }} -m pytest + $(PIPENV) coverage report -m + $(PIPENV) coverage html + $(BROWSER) htmlcov/index.html + +release: dist ## package and upload a release + $(PIPENV) flit publish + +dist: clean ## builds source and wheel package + $(PIPENV) flit build + ls -l dist + +install: clean ## install the package to the active Python's site-packages + $(PIPENV) flit install