-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathMakefile
150 lines (102 loc) · 4.75 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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
########################################################################################################################
# Variables
########################################################################################################################
GPG_ID = CA0B97334F9449EB5AFFCB93240BD54D194E3161
DIST = ./dist
BETA_DIST = ./beta_dist
# Composite Variables
CLEAN_TARGETS = ./.cache ./.tox ./*.egg-info ./.pytest_cache $(BETA_DIST) $(DIST) ./build ./htmlcov .coverage coverage.xml
########################################################################################################################
# `make help` Needs to be first so it is ran when just `make` is called
########################################################################################################################
.PHONY: help
help: # Show this help screen
@ack '^[a-zA-Z_-]+:.*?# .*$$' $(MAKEFILE_LIST) |\
sort -k1,1 |\
awk 'BEGIN {FS = ":.*?# "}; {printf "\033[1m%-30s\033[0m %s\n", $$1, $$2}'
########################################################################################################################
# Testing
########################################################################################################################
.PHONY: run-tox
run-tox: # Run tox for the project
tox
.PHONY: test
test: version-check test-flake test-unit test-coverage-report # Run the full testing suite
.PHONY: version-check
version-check: # Verify the project version string is correct across the project
./scripts/version_manager.py check
#---------------------------------------------------------------------------------------------------
# Test Subcommands
#---------------------------------------------------------------------------------------------------
# Report test coverage after tests are complete
.PHONY: test-coverage-report
test-coverage-report:
coverage report
# Run flake8 against project files
.PHONY: test-flake
test-flake:
flake8 -v
# Tox testing requires coverage to "append" results
.PHONY: test-tox
test-tox: COV-ARGS = --append
test-tox: test-unit
# Run only unit tests
.PHONY: test-unit
test-unit:
coverage run \
${COV-ARGS} \
--source="./letsencrypt" \
--omit="\
./letsencrypt/migrations/*,\
./letsencrypt/admin.py,\
./letsencrypt/apps.py,\
./letsencrypt/tests.py,\
./letsencrypt/urls.py,\
" \
example_project/manage.py test \
--settings=example_project.settings_test \
########################################################################################################################
# Integration Testing
########################################################################################################################
.PHONY: test-integration
test-integration: # Run the integration tests for the project
./scripts/local_integration.sh
########################################################################################################################
# Project Publishing
########################################################################################################################
.PHONY: publish
publish: build # Build, sign, and publish the package to PyPi
twine upload --repository pypi --sign --identity $(GPG_ID) $(DIST)/*
.PHONY: test-publish
test-publish: build-beta # Build, sign, and publish the package to TestPyPi
twine upload --repository testpypi --sign --identity $(GPG_ID) $(BETA_DIST)/*
########################################################################################################################
# Project Building
########################################################################################################################
.PHONY: build
build: build-pre build-package # Build the release package
.PHONY: build-beta
build-beta: build-pre build-beta-package # Build the beta package
.PHONY: clean
clean: # Clean up build, test, and other project artifacts
rm -rf $(CLEAN_TARGETS) && \
find . | grep -E "(__pycache__|\.pyc|\.pyo$$)" | xargs rm -rf && \
:
#---------------------------------------------------------------------------------------------------
# Build Subcommands
#---------------------------------------------------------------------------------------------------
# Perform required pre-build steps for all build types
.PHONY: build-pre
build-pre: version-check clean test
# Build 'sdist' and 'bdist_wheel' for this package (PyPi)
.PHONY: build-package
build-package:
python setup.py sdist --dist-dir $(DIST) bdist_wheel --dist-dir $(DIST)
# Build 'sdist' and 'bdist_wheel' for the beta package (Test PyPi)
.PHONY: build-beta-package
build-beta-package:
./scripts/version_manager.py set-beta-build && \
./scripts/version_manager.py check && \
python setup.py sdist --dist-dir $(BETA_DIST) bdist_wheel --dist-dir $(BETA_DIST) && \
./scripts/version_manager.py unset-beta-build && \
: