]>
Commit | Line | Data |
---|---|---|
d486dd0d JF |
1 | .PHONY: clean clean-test clean-pyc clean-build docs help |
2 | .DEFAULT_GOAL := help | |
3 | ||
4 | define BROWSER_PYSCRIPT | |
5 | import os, webbrowser, sys | |
6 | ||
7 | try: | |
8 | from urllib import pathname2url | |
9 | except: | |
10 | from urllib.request import pathname2url | |
11 | ||
12 | webbrowser.open("file://" + pathname2url(os.path.abspath(sys.argv[1]))) | |
13 | endef | |
14 | export BROWSER_PYSCRIPT | |
15 | ||
16 | define PRINT_HELP_PYSCRIPT | |
17 | import re, sys | |
18 | ||
19 | for line in sys.stdin: | |
20 | match = re.match(r'^([a-zA-Z_-]+):.*?## (.*)$$', line) | |
21 | if match: | |
22 | target, help = match.groups() | |
23 | print("%-20s %s" % (target, help)) | |
24 | endef | |
25 | export PRINT_HELP_PYSCRIPT | |
26 | ||
27 | BROWSER := python -c "$$BROWSER_PYSCRIPT" | |
28 | ||
29 | help: | |
30 | @python -c "$$PRINT_HELP_PYSCRIPT" < $(MAKEFILE_LIST) | |
31 | ||
32 | clean: clean-build clean-pyc clean-test ## remove all build, test, coverage and Python artifacts | |
33 | ||
34 | clean-build: ## remove build artifacts | |
35 | rm -fr build/ | |
36 | rm -fr dist/ | |
37 | rm -fr .eggs/ | |
38 | find . -name '*.egg-info' -exec rm -fr {} + | |
39 | find . -name '*.egg' -exec rm -f {} + | |
40 | ||
41 | clean-pyc: ## remove Python file artifacts | |
42 | find . -name '*.pyc' -exec rm -f {} + | |
43 | find . -name '*.pyo' -exec rm -f {} + | |
44 | find . -name '*~' -exec rm -f {} + | |
45 | find . -name '__pycache__' -exec rm -fr {} + | |
46 | ||
47 | clean-test: ## remove test and coverage artifacts | |
48 | rm -fr .tox/ | |
49 | rm -f .coverage | |
50 | rm -fr htmlcov/ | |
51 | rm -fr .pytest_cache | |
52 | ||
53 | lint: ## check style with flake8 | |
54 | flake8 ifupdown2 tests | |
55 | ||
56 | test: ## run tests quickly with the default Python | |
57 | py.test | |
58 | ||
59 | test-all: ## run tests on every Python version with tox | |
60 | tox | |
61 | ||
62 | coverage: ## check code coverage quickly with the default Python | |
63 | coverage run --source ifupdown2 -m pytest | |
64 | coverage report -m | |
65 | coverage html | |
66 | $(BROWSER) htmlcov/index.html | |
67 | ||
68 | docs: ## generate Sphinx HTML documentation, including API docs | |
69 | rm -f docs/ifupdown2.rst | |
70 | rm -f docs/modules.rst | |
71 | sphinx-apidoc -o docs/ ifupdown2 | |
72 | $(MAKE) -C docs clean | |
73 | $(MAKE) -C docs html | |
74 | $(BROWSER) docs/_build/html/index.html | |
75 | ||
76 | servedocs: docs ## compile the docs watching for changes | |
77 | watchmedo shell-command -p '*.rst' -c '$(MAKE) -C docs html' -R -D . | |
78 | ||
79 | testpy: ## package and upload to testpy | |
80 | python setup.py sdist bdist_wheel | |
81 | twine upload --repository-url https://test.pypi.org/legacy/ dist/* | |
82 | @echo "Install ifupdown2 from testpy 'pip install --index-url https://test.pypi.org/simple/ ifupdown2'" | |
83 | ||
84 | release: dist ## package and upload a release | |
85 | twine upload dist/* | |
86 | ||
87 | dist: clean ## builds source and wheel package | |
88 | python setup.py sdist | |
89 | python setup.py bdist_wheel | |
90 | ls -l dist | |
91 | ||
92 | install: clean ## install the package to the active Python's site-packages | |
93 | python setup.py install | |
94 | ||
95 | deb: clean ## create a debian package (.deb) | |
96 | debuild -b -rfakeroot -us -uc |