-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile
151 lines (117 loc) · 2.73 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
.PHONY: all develop test lint clean doc format
.PHONY: clean clean-build clean-pyc clean-test coverage dist docs install lint lint/flake8
# The package name
PKG=asciicast
all: test lint
#
# Setup
#
develop: install-deps activate-pre-commit configure-git
install-deps:
@echo "--> Installing dependencies"
pip install -U pip setuptools wheel
poetry install
activate-pre-commit:
@echo "--> Activating pre-commit hook"
pre-commit install
configure-git:
@echo "--> Configuring git"
git config branch.autosetuprebase always
#
# testing & checking
#
test-all: test test-readme
test: ## run tests quickly with the default Python
@echo "--> Running Python tests"
pytest --ff -x -p no:randomly
@echo ""
test-randomly:
@echo "--> Running Python tests in random order"
pytest
@echo ""
clean-test: ## remove test and coverage artifacts
rm -fr .tox/
rm -f .coverage
rm -fr htmlcov/
rm -fr .pytest_cache
pytest
@echo ""
test-with-coverage:
@echo "--> Running Python tests"
py.test --cov $(PKG)
@echo ""
test-with-typeguard:
@echo "--> Running Python tests with typeguard"
pytest --typeguard-packages=${PKG}
@echo ""
vagrant-tests:
vagrant up
vagrant ssh -c /vagrant/deploy/vagrant_test.sh
#
# Linting
#
.PHONY: lint/ruff
lint/ruff:
ruff src tests/test*.py
.PHONY: lint
lint:
ruff src tests/test*.py
mypy --show-error-codes src
flake8 src tests/test*.py
# python -m pyanalyze --config-file pyproject.toml src
lint-imports
make hadolint
vulture --min-confidence 80 src
deptry . --extend-exclude .nox --extend-exclude .tox
# TODO later
# mypy --check-untyped-defs src
.PHONY: hadolint
hadolint:
docker container run --rm -i \
hadolint/hadolint hadolint --ignore DL3008 --ignore DL3059 -t style - < Dockerfile
.PHONY: audit
audit:
pip-audit
safety check
#
# Formatting
#
format: format-py format-js
format-py:
docformatter -i -r src
black src tests
isort src tests
format-js:
echo "TODO"
#
# Everything else
#
install:
poetry install
doc: doc-html doc-pdf
doc-html:
sphinx-build -W -b html docs/ docs/_build/html
doc-pdf:
sphinx-build -W -b latex docs/ docs/_build/latex
make -C docs/_build/latex all-pdf
clean:
rm -f **/*.pyc
find . -type d -empty -delete
rm -rf *.egg-info *.egg .coverage .eggs .cache .mypy_cache .pyre \
.pytest_cache .pytest .DS_Store docs/_build docs/cache docs/tmp \
dist build pip-wheel-metadata junit-*.xml htmlcov coverage.xml
tidy: clean
rm -rf .tox .nox .dox .travis-solo
rm -rf node_modules
rm -rf instance
update-pot:
# _n => ngettext, _l => lazy_gettext
python setup.py extract_messages update_catalog compile_catalog
update-deps:
pip install -U pip setuptools wheel
poetry update
poetry export -o requirements.txt
publish: clean
git push --tags
poetry build
twine upload dist/*