-
Notifications
You must be signed in to change notification settings - Fork 142
Expand file tree
/
Copy pathmakefile
More file actions
60 lines (47 loc) · 1.65 KB
/
makefile
File metadata and controls
60 lines (47 loc) · 1.65 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
.PHONY: upload release release-test release-tag build version setup lint test unittests docs clean veryclean clean-venv release-check
REQUIREMENTS_TXT=requirements-dev.txt
test: unittests
setup:
python -m pip install --upgrade pip
pip install -r requirements-dev.txt
pip install -e .
lint:
flake8 redbeat tests
build:
python -m pip install --upgrade build && python -m build
release: release-check unittests release-tag
release-check:
# ensure on main branch
test "`git rev-parse --abbrev-ref HEAD`" = "main"
# ensure latest code
git pull
# ensure no local changes
test -z "`git status --porcelain`"
$(MAKE) test
release-tag: TODAY:=$(shell date '+%Y-%m-%d')
release-tag: NEXT_VERSION=$(shell echo $(VERSION) | awk -F. '{print $$1"."$$2"."$$3+1}')
release-tag:
ifndef VERSION
@echo "usage: make release VERSION='M.m.p'" && false
else
sed -i '' -e 's|version = .*|version = $(VERSION)|' setup.cfg
sed -i '' -e "s/unreleased/$(TODAY)/" CHANGES.txt
git ci -m"prepare for release of $(VERSION)" CHANGES.txt setup.cfg || git commit -m"prepare for release of $(VERSION)" CHANGES.txt setup.cfg || true
git tag -a v$(VERSION) -m"release version $(VERSION)"
git push --tags
printf "%s\n%s\n%s\n -\n" "$(NEXT_VERSION)dev (unreleased)" "---------------------" "$$(cat CHANGES.txt)" > CHANGES.txt
git commit -m"bump CHANGES.txt to $(NEXT_VERSION)dev for post-release development" CHANGES.txt
git push
endif
docs:
$(MAKE) -C docs/ html
unittests:
python -m unittest discover tests
clean:
rm -f dist/*
rm -rf docs/_build docs/_static docs/_templates
veryclean: clean clean-venv
clean-venv:
rm -rf .venv
version:
@grep -m1 '^version' setup.cfg | sed 's/.*= *//'