-
Notifications
You must be signed in to change notification settings - Fork 11
Expand file tree
/
Copy pathjustfile
More file actions
126 lines (107 loc) · 3.17 KB
/
justfile
File metadata and controls
126 lines (107 loc) · 3.17 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
# justfile for libvcs
# https://just.systems/
set shell := ["bash", "-uc"]
# File patterns
py_files := "find . -type f -not -path '*/\\.*' | grep -i '.*[.]py$' 2> /dev/null"
doc_files := "find . -type f -not -path '*/\\.*' | grep -i '.*[.]rst$\\|.*[.]md$\\|.*[.]css$\\|.*[.]py$\\|mkdocs\\.yml\\|CHANGES\\|TODO\\|.*conf\\.py' 2> /dev/null"
all_files := "find . -type f -not -path '*/\\.*' | grep -i '.*[.]py$\\|.*[.]rst$\\|.*[.]md$\\|.*[.]css$\\|.*[.]py$\\|mkdocs\\.yml\\|CHANGES\\|TODO\\|.*conf\\.py' 2> /dev/null"
# List all available commands
default:
@just --list
# Run tests with pytest
[group: 'test']
test *args:
uv run py.test {{ args }}
# Run tests then start continuous testing with pytest-watcher
[group: 'test']
start:
just test
uv run ptw .
# Watch files and run tests on change (requires entr)
[group: 'test']
watch-test:
#!/usr/bin/env bash
set -euo pipefail
if command -v entr > /dev/null; then
{{ all_files }} | entr -c just test
else
just test
just _entr-warn
fi
# Build documentation
[group: 'docs']
build-docs:
just -f docs/justfile html
# Watch files and rebuild docs on change
[group: 'docs']
watch-docs:
#!/usr/bin/env bash
set -euo pipefail
if command -v entr > /dev/null; then
{{ doc_files }} | entr -c just build-docs
else
just build-docs
just _entr-warn
fi
# Start documentation server with auto-reload
[group: 'docs']
start-docs:
just -f docs/justfile start
# Start documentation design mode (watches static files)
[group: 'docs']
design-docs:
just -f docs/justfile design
# Format code with ruff
[group: 'lint']
ruff-format:
uv run ruff format .
# Run ruff linter
[group: 'lint']
ruff:
uv run ruff check .
# Watch files and run ruff on change
[group: 'lint']
watch-ruff:
#!/usr/bin/env bash
set -euo pipefail
if command -v entr > /dev/null; then
{{ py_files }} | entr -c just ruff
else
just ruff
just _entr-warn
fi
# Run mypy type checker
[group: 'lint']
mypy:
uv run mypy $({{ py_files }})
# Watch files and run mypy on change
[group: 'lint']
watch-mypy:
#!/usr/bin/env bash
set -euo pipefail
if command -v entr > /dev/null; then
{{ py_files }} | entr -c just mypy
else
just mypy
just _entr-warn
fi
# Format markdown files with prettier
[group: 'format']
format-markdown:
prettier --parser=markdown -w *.md docs/*.md docs/**/*.md CHANGES
# Run monkeytype to collect runtime types
[group: 'typing']
monkeytype-create:
uv run monkeytype run $(uv run which py.test)
# Apply collected monkeytype annotations
[group: 'typing']
monkeytype-apply:
uv run monkeytype list-modules | xargs -n1 -I{} sh -c 'uv run monkeytype apply {}'
[private]
_entr-warn:
@echo "----------------------------------------------------------"
@echo " ! File watching functionality non-operational ! "
@echo " "
@echo "Install entr(1) to automatically run tasks on file change."
@echo "See https://eradman.com/entrproject/ "
@echo "----------------------------------------------------------"