cookiecutter
/
Makefile
115 строк · 2.5 Кб
1PYPI_SERVER = pypitest
2
3define BROWSER_PYSCRIPT
4import os, webbrowser, sys
5try:
6from urllib import pathname2url
7except:
8from urllib.request import pathname2url
9
10webbrowser.open("file://" + pathname2url(os.path.abspath(sys.argv[1])))
11endef
12export BROWSER_PYSCRIPT
13BROWSER := python -c "$$BROWSER_PYSCRIPT"
14
15.DEFAULT_GOAL := help
16
17
18.PHONY: clean-tox
19clean-tox: ## Remove tox testing artifacts
20@echo "+ $@"
21@rm -rf .tox/
22
23.PHONY: clean-coverage
24clean-coverage: ## Remove coverage reports
25@echo "+ $@"
26@rm -rf htmlcov/
27@rm -rf .coverage
28@rm -rf coverage.xml
29
30.PHONY: clean-pytest
31clean-pytest: ## Remove pytest cache
32@echo "+ $@"
33@rm -rf .pytest_cache/
34
35.PHONY: clean-docs-build
36clean-docs-build: ## Remove local docs
37@echo "+ $@"
38@rm -rf docs/_build
39
40.PHONY: clean-build
41clean-build: ## Remove build artifacts
42@echo "+ $@"
43@rm -fr build/
44@rm -fr dist/
45@rm -fr *.egg-info
46
47.PHONY: clean-pyc
48clean-pyc: ## Remove Python file artifacts
49@echo "+ $@"
50@find . -type d -name '__pycache__' -exec rm -rf {} +
51@find . -type f -name '*.py[co]' -exec rm -f {} +
52@find . -name '*~' -exec rm -f {} +
53
54.PHONY: clean ## Remove all file artifacts
55clean: clean-build clean-pyc clean-tox clean-coverage clean-pytest clean-docs-build
56
57.PHONY: lint
58lint: ## Check code style
59@echo "+ $@"
60@tox -e lint
61
62.PHONY: test
63test: ## Run tests quickly with the default Python
64@echo "+ $@"
65@tox -e py310
66
67.PHONY: test-all
68test-all: ## Run tests on every Python version
69@echo "+ $@"
70@tox
71
72.PHONY: coverage
73coverage: ## Check code coverage quickly with the default Python
74@echo "+ $@"
75@tox -e py310
76@$(BROWSER) htmlcov/index.html
77
78.PHONY: docs
79docs: ## Generate Sphinx HTML documentation, including API docs
80@echo "+ $@"
81@tox -e docs
82@$(BROWSER) docs/_build/html/index.html
83
84.PHONY: servedocs
85servedocs: ## Rebuild docs automatically
86@echo "+ $@"
87@tox -e servedocs
88
89.PHONY: submodules
90submodules: ## Pull and update git submodules recursively
91@echo "+ $@"
92@git pull --recurse-submodules
93@git submodule update --init --recursive
94
95.PHONY: release
96release: clean ## Package and upload release
97@echo "+ $@"
98@python -m build
99@twine upload -r $(PYPI_SERVER) dist/*
100
101.PHONY: sdist
102sdist: clean ## Build sdist distribution
103@echo "+ $@"
104@python -m build --sdist
105@ls -l dist
106
107.PHONY: wheel
108wheel: clean ## Build wheel distribution
109@echo "+ $@"
110@python -m build --wheel
111@ls -l dist
112
113.PHONY: help
114help:
115@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-16s\033[0m %s\n", $$1, $$2}'
116