-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathMakefile
More file actions
160 lines (131 loc) · 5.03 KB
/
Makefile
File metadata and controls
160 lines (131 loc) · 5.03 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
154
155
156
157
158
159
160
#
# File: https://github.com/cloud-helpers/python-plugin-data-loader/blob/main/Makefile
#
# Doc:
# * https://medium.com/@Nexumo_/uv-for-python-reproducible-envs-that-dont-break-ci-8bc7104866cd
#
#
PACKAGE_NAME := "data-loader-plugin"
$(eval PACKAGE_NAME_UNDERSCORES=$(shell echo $(PACKAGE_NAME) | tr - _))
PYPI_USER := "$PYPI_USER"
PYPI_TOKEN := "$PYPI_TOKEN"
COVERAGE_OPTIONS := "--cov-branch --cov-config coverage/.coveragerc --cov-report term --cov-report html"
NOW_TS := $(shell TZ=":Europe/Paris" date '+%Y-%m-%d %H:%M:%S %Z')
TODAY_DATE := $(shell TZ=":Europe/Paris" date '+%Y-%m-%d')
## HELP
.DEFAULT_GOAL:=help
.PHONY: info tests
help: ## Display the help menu.
@echo "make <target>"
@echo "Environments: $(ENV_TGTS)"
@grep -h "\#\#" $(MAKEFILE_LIST)
clean-python:
@rm -rf .venv .mypy_cache __pycache__
clean-dist:
@rm -rf dist
clean-log:
@rm -f *.log
clean: clean-python clean-dist clean-log
init:
@uv lock
@uv export --format requirements.txt > requirements.txt
update:
@uv sync
@uv export --format requirements.txt > requirements.txt
build: clean-dist
@uv build
@ls -lFh dist/
doc:
@uv run --all-extras --group docs --link-mode=copy python -msphinx build docs docs/_build
# --force-reinstall
install-local: uninstall-local
$(eval PACKAGE_VERSION=$(shell cat VERSION))
@python -mpip install dist/$(PACKAGE_NAME_UNDERSCORES)-$(PACKAGE_VERSION)-*.whl
uninstall-local:
$(eval PACKAGE_VERSION=$(shell cat VERSION))
@python -mpip uninstall -y $(PACKAGE_NAME)
code-format:
@ruff check --fix src
@ruff format src
code-quality-mypy:
@uv run mypy src
code-quality-ty:
@ty check src
tests:
@uv run pytest tests
# Bumpers
bump-version: ## Bump the version into the other files from the VERSION file
$(eval PACKAGE_VERSION=$(shell cat VERSION))
sed -i.bak 's/^version = .*/version = "$(PACKAGE_VERSION)"/' pyproject.toml && rm pyproject.toml.bak
@echo "Next step: make init update"
increment-dev-version:
$(eval VERSION=$(shell cat VERSION))
@VERSION_REGEX="^[0-9]+\.[0-9]+\.[0-9]+$$"; \
DEV_VERSION_REGEX="^[0-9]+\.[0-9]+\.[0-9]+\.dev[0-9]+$$"; \
echo "Current version: $(VERSION)"; \
if echo "$(VERSION)" | grep -Eq "$$VERSION_REGEX"; then \
NEW_VERSION=$$(echo "$(VERSION)" | awk -F. '{print $$1"."$$2+1".0.dev0"}'); \
echo "Updating release version to the next minor dev version: $$NEW_VERSION"; \
elif echo "$(VERSION)" | grep -Eq "$$DEV_VERSION_REGEX"; then \
NEW_VERSION=$$(echo "$(VERSION)" | awk -F'.dev' '{print $$1".dev"($$2+1)}'); \
echo "Updating dev version to: $$NEW_VERSION"; \
else \
echo "ERROR: Version format is invalid. Should be X.Y.Z or X.Y.Z.devN"; \
exit 1; \
fi; \
echo "$$NEW_VERSION" > VERSION
switch-to-minor-version:
$(eval VERSION=$(shell cat VERSION))
@VERSION_REGEX="^[0-9]+\.[0-9]+\.[0-9]+\.dev[0-9]+$$"; \
echo "Current version: $(VERSION)"; \
if echo "$(VERSION)" | grep -Eq "$$VERSION_REGEX"; then \
NEW_VERSION=$$(echo "$(VERSION)" | sed 's/\.dev[0-9]*//'); \
echo "Switching to next minor version: $$NEW_VERSION"; \
else \
echo "ERROR: Version format is invalid. Should be X.Y.Z.devN"; \
exit 1; \
fi; \
echo "$$NEW_VERSION" > VERSION
bump-to-minor-version:
$(eval VERSION=$(shell cat VERSION))
@VERSION_REGEX="^[0-9]+\.[0-9]+\.[0-9]+\.dev[0-9]+$$"; \
echo "Current version: $(VERSION)"; \
if echo "$(VERSION)" | grep -Eq "$$VERSION_REGEX"; then \
NEW_VERSION=$$(echo "$(VERSION)" | sed 's/\.dev[0-9]*//'); \
echo "Bumping to next minor version: $$NEW_VERSION"; \
else \
echo "ERROR: Version format is invalid. Should be X.Y.Z.devN"; \
exit 1; \
fi; \
echo "$$NEW_VERSION" > VERSION
bump-to-major-version:
$(eval VERSION=$(shell cat VERSION))
@VERSION_REGEX="^[0-9]+\.[0-9]+\.[0-9]+(\.dev[0-9]+)?(\+[a-zA-Z0-9._-]+)?$$"; \
echo "Current version: $(VERSION)"; \
if echo "$(VERSION)" | grep -Eq "$$VERSION_REGEX"; then \
NEW_VERSION=$$(echo "$(VERSION)" | sed 's/\(\.dev[0-9]*\)\?(\+[a-zA-Z0-9._-]*)\?//g'); \
NEW_VERSION=$$(echo "$$NEW_VERSION" | awk -F'[.]' '{print $$1+1".0.0"}'); \
echo "Bumping version to next major: $$NEW_VERSION"; \
else \
echo "ERROR: Version format is invalid. Should be X.Y.Z, X.Y.Z.devN, X.Y.Z+branch.name, or X.Y.Z.devN+branch.name"; \
exit 1; \
fi; \
echo "$$NEW_VERSION" > VERSION
bump-to-patch-version:
$(eval VERSION=$(shell cat VERSION))
@VERSION_REGEX="^[0-9]+\.[0-9]+\.[0-9]+(\.dev[0-9]+)?(\+[a-zA-Z0-9._-]+)?$$"; \
echo "Current version: $(VERSION)"; \
if echo "$(VERSION)" | grep -Eq "$$VERSION_REGEX"; then \
NEW_VERSION=$$(echo "$(VERSION)" | sed 's/\(\.dev[0-9]*\)\?(\+[a-zA-Z0-9._-]*)\?//g'); \
NEW_VERSION=$$(echo "$$NEW_VERSION" | awk -F'[.]' '{print $$1"."$$2"."$$3+1}'); \
echo "Bumping version to next patch: $$NEW_VERSION"; \
else \
echo "ERROR: Version format is invalid. Should be X.Y.Z, X.Y.Z.devN, X.Y.Z+branch.name, or X.Y.Z.devN+branch.name"; \
exit 1; \
fi; \
echo "$$NEW_VERSION" > VERSION
# Doc: https://packaging.python.org/en/latest/tutorials/packaging-projects/
publish-pypitest:
@uv run python -mtwine upload --repository pypi-test dist/*
publish-pypi:
@uv run python -mtwine upload --repository pypi dist/*