-
Notifications
You must be signed in to change notification settings - Fork 1.6k
/
Makefile
156 lines (124 loc) · 4.1 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
.PHONY: clean-so clean-test clean-pyc clean-build clean-docs clean
.PHONY: docs check check-manifest check-setup check-history lint
.PHONY: test test-all coverage
.PHONY: compile-reqs install-reqs
.PHONY: release dist install build-inplace
define BROWSER_PYSCRIPT
import os, webbrowser, sys
FAIL = "\033[91m"
ENDC = "\033[0m"
try:
from urllib.request import pathname2url
except:
print(FAIL + "Python2 is deprecated, please upgrade your python >= 3.7" + ENDC)
webbrowser.open("file://" + pathname2url(os.path.abspath(sys.argv[1])))
endef
export BROWSER_PYSCRIPT
BROWSER := python -c "$$BROWSER_PYSCRIPT"
SPHINX_BUILD := html
help:
@echo "check - check setup, code style, setup, etc"
@echo "check-manifest - check manifest"
@echo "check-setup - check setup"
@echo "check-history - check history"
@echo "clean - remove all build, test, coverage and Python artifacts"
@echo "clean-build - remove build artifacts"
@echo "clean-docs - remove docs artifacts"
@echo "clean-pyc - remove Python file artifacts"
@echo "clean-test - remove test and coverage artifacts"
@echo "clean-so - remove compiled extensions"
@echo "lint - check style with flake8"
@echo "test - run tests quickly with the default Python"
@echo "test-all - run tests on every Python version with tox"
@echo "coverage - check code coverage quickly with the default Python"
@echo "compile-reqs - compile requirements"
@echo "install-reqs - install requirements"
@echo "docs - generate Sphinx HTML documentation, including API docs"
@echo "dist-upload - package and upload a release"
@echo "release - bump release and push changes"
@echo "dist - package"
@echo "develop - install package in develop mode"
@echo "install - install the package to the active Python's site-packages"
check: check-setup check-manifest check-history lint
check-setup:
@echo "Checking package metadata (name, description, etc)"
python setup.py check --strict --metadata --restructuredtext
check-manifest:
@echo "Checking MANIFEST.in"
check-manifest --ignore ".*"
check-history:
@echo "Checking latest version in HISTORY"
VERSION=`cat VERSION`; grep "^$${VERSION}\b" HISTORY.rst
clean: clean-build clean-docs clean-pyc clean-test clean-so
clean-build:
rm -fr build/
rm -fr dist/
rm -fr .eggs/
find . -name '*.egg-info' -exec rm -fr {} +
find . -name '*.egg' -exec rm -f {} +
clean-docs:
$(MAKE) -C docs clean
clean-pyc:
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:
rm -fr .tox/
rm -f .coverage
rm -fr htmlcov/
clean-so:
find . -name '*.so' -exec rm -f {} +
lint:
flake8 src tests
build-inplace:
python setup.py build_ext --inplace
develop: clean
pip install -e .
test: develop
pytest --ignore=setup.py
test-all:
tox -v
coverage: develop
coverage run -m pytest --ignore=setup.py
coverage combine
coverage report
coverage html
$(BROWSER) htmlcov/index.html
docs-build: develop
rm -f docs/scrapy_redis.rst
rm -f docs/modules.rst
sphinx-apidoc -o docs/ src/scrapy_redis
$(MAKE) -C docs clean
$(MAKE) -C docs $(SPHINX_BUILD)
docs: docs-build
$(BROWSER) docs/_build/$(SPHINX_BUILD)/index.html
servedocs: docs
watchmedo shell-command -p '*.rst' -c '$(MAKE) -C docs html' -R -D .
release:
@echo "To do a release, follow the steps:"
@echo "- bumpversion release"
@echo "- Review and commit"
@echo "- git tag -a \`cat VERSION\`"
@echo "- git push --follow-tags"
dist-upload: clean check dist
twine upload dist/*
dist: clean
python setup.py sdist
python setup.py bdist_wheel
ls -l dist
install: clean
pip install .
REQUIREMENTS_IN := $(wildcard requirements*.in)
.PHONY: $(REQUIREMENTS_IN)
requirements%.txt: requirements%.in
pip-compile -v $< -o $@
REQUIREMENTS_TXT := $(REQUIREMENTS_IN:.in=.txt)
ifndef REQUIREMENTS_TXT
REQUIREMENTS_TXT := $(wildcard requirements*.txt)
endif
compile-reqs: $(REQUIREMENTS_TXT)
@test -z "$$REQUIREMENTS_TXT" && echo "No 'requirements*.in' files. Nothing to do"
install-reqs:
@test -z "$$REQUIREMENTS_TXT" && echo "No 'requirements*.txt' files. Nothing to do"
$(foreach req,$(REQUIREMENTS_TXT),pip install -r $(req);)