-
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
153 lines (121 loc) · 3.91 KB
/
Makefile
File metadata and controls
153 lines (121 loc) · 3.91 KB
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
app := complexitty
src := src/
docs := docs/
run := uv run
sync := uv sync
build := uv build
publish := uv publish --username=__token__ --keyring-provider=subprocess
python := $(run) python
ruff := $(run) ruff
lint := $(ruff) check
fmt := $(ruff) format
mypy := $(run) mypy
mkdocs := $(run) mkdocs
spell := $(run) codespell
##############################################################################
# Local "interactive testing" of the code.
.PHONY: run
run: # Run the code in a testing context
$(run) $(app)
.PHONY: serve
serve: # Run in server mode for use in the browser
$(run) textual serve $(app)
.PHONY: debug
debug: # Run the code with Textual devtools enabled
TEXTUAL=devtools make
.PHONY: console
console: # Run the textual console
$(run) textual console
##############################################################################
# Setup/update packages the system requires.
.PHONY: ready
ready: # Make the development environment ready to go
$(sync)
.PHONY: setup
setup: ready # Set up the repository for development
$(run) pre-commit install
.PHONY: update
update: # Update all dependencies
$(sync) --upgrade
.PHONY: resetup
resetup: realclean # Recreate the virtual environment from scratch
make setup
##############################################################################
# Checking/testing/linting/etc.
.PHONY: lint
lint: # Check the code for linting issues
$(lint) $(src) $(docs)
.PHONY: codestyle
codestyle: # Is the code formatted correctly?
$(fmt) --check $(src) $(docs)
.PHONY: typecheck
typecheck: # Perform static type checks with mypy
$(mypy) --scripts-are-modules $(src) $(docs)
.PHONY: stricttypecheck
stricttypecheck: # Perform a strict static type checks with mypy
$(mypy) --scripts-are-modules --strict $(src) $(docs)
.PHONY: spellcheck
spellcheck: # Spell check the code
$(spell) *.md $(src) $(docs)
.PHONY: checkall
checkall: spellcheck codestyle lint stricttypecheck # Check all the things
##############################################################################
# Documentation.
.PHONY: docs
docs: ready # Generate the system documentation
$(mkdocs) build
.PHONY: rtfm
rtfm: ready # Locally read the library documentation
$(mkdocs) serve
.PHONY: publishdocs
publishdocs: clean-docs ready # Set up the docs for publishing
$(mkdocs) gh-deploy
##############################################################################
# Package/publish.
.PHONY: package
package: # Package the library
$(build)
.PHONY: spackage
spackage: # Create a source package for the library
$(build) --sdist
.PHONY: testdist
testdist: package # Perform a test distribution
$(publish) --index testpypi
.PHONY: dist
dist: package # Upload to pypi
$(publish)
##############################################################################
# Utility.
.PHONY: repl
repl: # Start a Python REPL in the venv.
$(python)
.PHONY: delint
delint: # Fix linting issues.
$(lint) --fix $(src) $(docs)
.PHONY: pep8ify
pep8ify: # Reformat the code to be as PEP8 as possible.
$(fmt) $(src) $(docs)
.PHONY: tidy
tidy: delint pep8ify # Tidy up the code, fixing lint and format issues.
.PHONY: clean-packaging
clean-packaging: # Clean the package building files
rm -rf dist
.PHONY: clean-docs
clean-docs: # Clean up the documentation building files
rm -rf site .screenshot_cache
.PHONY: clean
clean: clean-packaging clean-docs # Clean the build directories
.PHONY: realclean
realclean: clean # Clean the venv and build directories
rm -rf .venv
.PHONY: help
help: # Display this help
@grep -Eh "^[a-z]+:.+# " $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.+# "}; {printf "%-20s %s\n", $$1, $$2}'
##############################################################################
# Housekeeping tasks.
.PHONY: housekeeping
housekeeping: # Perform some git housekeeping
git fsck
git gc --aggressive
git remote update --prune
### Makefile ends here