-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
133 lines (105 loc) · 3.49 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
###############################################################################
# Common make values.
lib := auto_tool_agent
run := uv run
python := $(run) python
pyright := $(run) pyright
ruff := $(run) ruff
twine := $(run) twine
#build := $(python) -m build
build := uvx --from build pyproject-build --installer uv
export UV_LINK_MODE=copy
export PIPENV_VERBOSITY=-1
##############################################################################
# Run the app.
.PHONY: run
run: # Run the app
$(python) -m $(lib) --sandbox="$(shell pwd)/src/auto_tool_agent/sandbox" "$(ARG1)" "$(ARG2)" "$(ARG3)" "$(ARG4)" "$(ARG5)" "$(ARG6)" "$(ARG7)" "$(ARG8)" "$(ARG9)"
.PHONY: app_help
app_help: # Show app help
$(python) -m $(lib) --help
.PHONY: test
test: # Run textual dev console
$(python) -m unittest discover -s tests
##############################################################################
.PHONY: uv-lock
uv-lock:
uv lock
.PHONY: uv-sync
uv-sync:
uv sync
.PHONY: setup
setup: uv-lock uv-sync # use this for first time run
uv remove python-dotenv && uv add python-dotenv # hack to get python-dotenv working
.PHONY: resetup
resetup: remove-venv setup # Recreate the virtual environment from scratch
.PHONY: remove-venv
remove-venv: # Remove the virtual environment
rm -rf .venv
.PHONY: depsupdate
depsupdate: # Update all dependencies
uv sync -U
.PHONY: depsshow
depsshow: # Show the dependency graph
uv tree
.PHONY: shell
shell: # Start shell inside of .venv
$(run) bash
##############################################################################
# Checking/testing/linting/etc.
.PHONY: format
format: # Reformat the code with ruff.
$(ruff) format src/$(lib)
.PHONY: lint
lint: # Run ruff over the library
$(ruff) check src/$(lib) --fix
.PHONY: typecheck
typecheck: # Perform static type checks with pyright
$(pyright)
.PHONY: typecheck-stats
typecheck-stats: # Perform static type checks with pyright and print stats
$(pyright) --stats
.PHONY: checkall
checkall: typecheck lint # Check all the things
.PHONY: pre-commit # run pre-commit checks on all files
pre-commit:
pre-commit run --all-files
.PHONY: pre-commit-update # run pre-commit and update hooks
pre-commit-update:
pre-commit autoupdate
##############################################################################
# Package/publish.
.PHONY: package
package: # Package the library
$(build) -w
.PHONY: spackage
spackage: # Create a source package for the library
$(build) -s
.PHONY: packagecheck
packagecheck: clean package spackage # Check the packaging.
$(twine) check dist/*
.PHONY: testdist
testdist: packagecheck # Perform a test distribution
$(twine) upload --repository testpypi dist/*
#$(twine) upload --skip-existing --repository testpypi dist/*
.PHONY: dist
dist: packagecheck # Upload to pypi
$(twine) upload --skip-existing dist/*
##############################################################################
# Utility.
.PHONY: repl
repl: # Start a Python REPL
$(python)
.PHONY: clean
clean: # Clean the build directories
rm -rf build dist $(lib).egg-info
.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