Makefile 2.3 KB
Newer Older
A
Adam Geitgey 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
.PHONY: clean clean-test clean-pyc clean-build docs 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
A
tweaks  
Adam Geitgey 已提交
24
BROWSER := python3 -c "$$BROWSER_PYSCRIPT"
A
Adam Geitgey 已提交
25 26

help:
A
tweaks  
Adam Geitgey 已提交
27
	@python3 -c "$$PRINT_HELP_PYSCRIPT" < $(MAKEFILE_LIST)
A
Adam Geitgey 已提交
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54

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 -fr .tox/
	rm -f .coverage
	rm -fr htmlcov/

lint: ## check style with flake8
	flake8 face_recognition tests

test: ## run tests quickly with the default Python
	
A
tweaks  
Adam Geitgey 已提交
55
		python3 setup.py test
A
Adam Geitgey 已提交
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79

test-all: ## run tests on every Python version with tox
	tox

coverage: ## check code coverage quickly with the default Python
	
		coverage run --source face_recognition setup.py test
	
		coverage report -m
		coverage html
		$(BROWSER) htmlcov/index.html

docs: ## generate Sphinx HTML documentation, including API docs
	rm -f docs/face_recognition.rst
	rm -f docs/modules.rst
	sphinx-apidoc -o docs/ face_recognition
	$(MAKE) -C docs clean
	$(MAKE) -C docs html
	$(BROWSER) docs/_build/html/index.html

servedocs: docs ## compile the docs watching for changes
	watchmedo shell-command -p '*.rst' -c '$(MAKE) -C docs html' -R -D .

release: clean ## package and upload a release
A
tweaks  
Adam Geitgey 已提交
80 81
	python3 setup.py sdist upload
	python3 setup.py bdist_wheel upload
A
Adam Geitgey 已提交
82 83

dist: clean ## builds source and wheel package
A
tweaks  
Adam Geitgey 已提交
84 85
	python3 setup.py sdist
	python3 setup.py bdist_wheel
A
Adam Geitgey 已提交
86 87 88
	ls -l dist

install: clean ## install the package to the active Python's site-packages
A
tweaks  
Adam Geitgey 已提交
89
	python3 setup.py install