-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathMakefile
130 lines (99 loc) · 2.45 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
# convenient makefile
SHELL = /bin/bash
.ONESHELL:
MODULE = FlaskSimpleAuth
F.md = $(wildcard *.md)
F.pdf = $(F.md:%.md=%.pdf)
# PYTHON = /snap/bin/pypy3
# PYTHON = python3
PYTHON = python
PIP = venv/bin/pip
.PHONY: check.mypy
check.mypy: dev
source venv/bin/activate
mypy $(MODULE).py
.PHONY: check.pyright
check.pyright: dev
source venv/bin/activate
pyright $(MODULE).py
.PHONY: check.black
check.black: dev
source venv/bin/activate
black --check $(MODULE).py
IGNORE = E227,E402,E501,E721,F401,F811
.PHONY: check.flake8
check.flake8: dev
source venv/bin/activate
flake8 --ignore=E127,E129,W504,$(IGNORE) $(MODULE).py
.PHONY: check.ruff
check.ruff: dev
source venv/bin/activate
ruff check --ignore=$(IGNORE) $(MODULE).py
.PHONY: check.pytest
check.pytest: dev
source venv/bin/activate
$(MAKE) -C test check
.PHONY: check.coverage
check.coverage: dev
source venv/bin/activate
$(MAKE) -C test coverage
# MD013: line length
.PHONY: check.docs
check.docs: dev
source venv/bin/activate
pymarkdown -d MD013 scan *.md */*.md
sphinx-lint docs/
# just run the demo
.PHONY: check.demo
check.demo: dev
source venv/bin/activate
$(MAKE) -C demo check.pgall
STYLE = flake8
.NOTPARALLEL: check.pytest check.coverage check.demo
.PHONY: check
check: check.pyright check.ruff check.$(STYLE) check.docs check.pytest check.demo check.coverage
.PHONY: clean
clean:
$(RM) -r __pycache__ */__pycache__ dist build .mypy_cache .pytest_cache
$(RM) $(F.pdf)
$(MAKE) -C test clean
$(MAKE) -C demo clean
$(MAKE) -C docs clean
.PHONY: clean.venv
clean.venv: clean
$(RM) -r venv *.egg-info
$(MAKE) -C demo clean.venv
.PHONY: clean.dev
clean.dev: clean.venv
# FIXME tmp parameter to work around 3.13t issues
DEPS = dev,demo,password,jwt,cors,httpauth,redis,memcached
# for local testing
venv:
$(PYTHON) -m venv venv
$(PIP) install -U pip
$(PIP) install -e .[$(DEPS)]
venv/.dev: venv
$(PIP) install -e .[dev,doc,tests,ldap]
$(PIP) install python-ldap
touch $@
.PHONY: dev
dev: venv/.dev
venv/.pub: dev
$(PIP) install -e .[pub]
touch $@
.PHONY: pub
pub: venv/.pub
$(MODULE).egg-info: venv
$(PIP) install -e .
# generate source and built distribution
dist: pub
source venv/bin/activate
$(PYTHON) -m build
.PHONY: publish
publish: dist
# provide pypi login/pw or token somewhere…
echo venv/bin/twine upload dist/*
# generate pdf doc
MD2PDF = pandoc -f markdown -t latex -V papersize:a4 -V geometry:hmargin=2.5cm -V geometry:vmargin=3cm
%.pdf: %.md
$(MD2PDF) -o $@ $<