-
Notifications
You must be signed in to change notification settings - Fork 4
/
Makefile
122 lines (88 loc) · 3.43 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
# This makefile has been created to help developers perform common actions.
# Most actions assume it is operating in a virtual environment where the
# python command links to the appropriate virtual environment Python.
VENVS_DIR := $(HOME)/.venvs
VENV_DIR := $(VENVS_DIR)/adsb
# Do not remove this block. It is used by the 'help' rule when
# constructing the help output.
# help:
# help: adsb Makefile help
# help:
# help: help - display this makefile's help information
.PHONY: help
help:
@grep "^# help\:" Makefile | grep -v grep | sed 's/\# help\: //' | sed 's/\# help\://'
# help: venv - create a virtual environment for development
.PHONY: venv
venv:
@test -d "$(VENVS_DIR)" || mkdir -p "$(VENVS_DIR)"
@rm -Rf "$(VENV_DIR)"
@python3 -m venv "$(VENV_DIR)"
@/bin/bash -c "source $(VENV_DIR)/bin/activate && pip install pip --upgrade && pip install -r requirements.dev.txt && pip install -e ."
@echo "Enter virtual environment using:\n\n\t$ source $(VENV_DIR)/bin/activate\n"
# help: clean - clean all files using .gitignore rules
.PHONY: clean
clean:
@git clean -X -f -d
# help: scrub - clean all files, even untracked files
.PHONY: scrub
scrub:
git clean -x -f -d
# help: test - run tests
.PHONY: test
test:
@python -m unittest discover -s tests
# help: test-verbose - run tests [verbosely]
.PHONY: test-verbose
test-verbose:
@python -m unittest discover -s tests -v
# help: check-coverage - perform test coverage checks
.PHONY: check-coverage
check-coverage:
@coverage run -m unittest discover -s tests
@# produce html coverage report on modules
@coverage html -d docs/source/coverage --include="src/adsb/*"
@# rename coverage html file for latter use with documentation
@cd docs/source/coverage; mv index.html coverage.html
# help: check-style - check code formatting
.PHONY: check-style
check-style:
@black --check src/adsb tests setup.py
# help: style - apply code formatting
.PHONY: style
style:
@black src/adsb tests setup.py
# help: check-types - check type hint annotations
.PHONY: check-types
check-types:
@cd src; MYPYPATH=$(VENV_DIR)/lib/python*/site-packages mypy -p adsb --ignore-missing-imports
# help: docs - generate project documentation
.PHONY: check-coverage
docs: check-coverage
@cd docs; rm -rf source/api/adsb*.rst source/api/modules.rst build/*
@cd docs; make html
@# Copy coverage output into docs build tree
@cd docs; cp -R source/coverage build/html/.
# help: check-docs - quick check docs consistency
.PHONY: check-docs
check-docs:
@cd docs; make dummy
# help: serve-docs - serve project html documentation
.PHONY: serve-docs
serve-docs:
@cd docs/build; python -m http.server --bind 127.0.0.1
# help: dist - create a wheel distribution package
.PHONY: dist
dist:
@python setup.py bdist_wheel
# help: dist-test - test a whell distribution package
.PHONY: dist-test
dist-test: dist
@cd dist && ../tests/test-dist.bash ./adsb-*-py3-none-any.whl
# help: dist-upload - upload a wheel distribution package
.PHONY: dist-upload
dist-upload:
@twine upload dist/adsb-*-py3-none-any.whl
# Keep these lines at the end of the file to retain nice help
# output formatting.
# help: