-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathMakefile
153 lines (121 loc) · 5.55 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
151
152
153
.PHONY: clean compile_translations coverage docs dummy_translations \
extract_translations fake_translations help pull_translations push_translations \
quality requirements selfcheck test test-all test_badges test_course_certs \
test_course_extensions upgrade validate
.DEFAULT_GOAL := help
define BROWSER_PYSCRIPT
import os, webbrowser, sys
try:
from urllib import pathname2url
except:
from urllib.request import pathname2url
webbrowser.open("file://" + pathname2url(os.path.abspath(sys.argv[1])))
endef
export BROWSER_PYSCRIPT
BROWSER := python -c "$$BROWSER_PYSCRIPT"
OS_NAME := $(shell uname -s)
ifeq ($(OS_NAME),Linux)
TEST_PRE = @sudo service mongodb start
TEST_POST = @sudo service mongodb stop
SHELL := /opt/local/bin/bash
endif
ifeq ($(OS_NAME),Darwin)
TEST_PRE = @brew services start mongodb/brew/[email protected]
TEST_POST = @brew services start mongodb/brew/[email protected]
SHELL := /bin/bash
endif
help: ## display this help message
@echo "Please use \`make <target>' where <target> is one of"
@perl -nle'print $& if m{^[a-zA-Z_-]+:.*?## .*$$}' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m %-25s\033[0m %s\n", $$1, $$2}'
clean: ## remove generated byte code, coverage reports, and build artifacts
find . -name '__pycache__' -exec rm -rf {} +
find . -name '*.pyc' -exec rm -f {} +
find . -name '*.pyo' -exec rm -f {} +
find . -name '*~' -exec rm -f {} +
# coverage erase
rm -fr build/
rm -fr dist/
rm -fr *.egg-info
coverage: clean ## generate and view HTML coverage report
pip install codecov
py.test --cov-report html
$(BROWSER) htmlcov/index.html
docs: ## generate Sphinx HTML documentation, including API docs
tox -e docs
$(BROWSER) docs/_build/html/index.html
upgrade: ## update the requirements/*.txt files with the latest packages satisfying requirements/*.in
pip install -q pip-tools
pip-compile --upgrade -o requirements/dev.txt requirements/base.in requirements/dev.in requirements/quality.in
pip-compile --upgrade -o requirements/doc.txt requirements/base.in requirements/doc.in
pip-compile --upgrade -o requirements/quality.txt requirements/quality.in
pip-compile --upgrade -o requirements/test.txt requirements/base.in requirements/test.in
pip-compile --upgrade -o requirements/travis.txt requirements/travis.in
# Let tox control the Django version for tests
sed '/^django==/d' requirements/test.txt > requirements/test.tmp
mv requirements/test.tmp requirements/test.txt
quality: ## check coding style with pycodestyle and pylint
tox -e quality
system-deps:
ifeq ($(OS_NAME),Linux)
@sudo apt-get install -y graphviz graphviz-dev
@sudo apt-get install libxml2-dev libxmlsec1-dev pkg-config
@sudo apt-get install mongodb-org-server
endif
ifeq ($(OS_NAME),Darwin)
@brew upgrade graphviz gettext
@brew upgrade libxmlsec1 libxml2 pkg-config
@brew tap mongodb/brew
@brew install [email protected]
endif
requirements: system-deps ## install development environment requirements
pip install -r requirements/dev.txt
pip install -r requirements/test.txt
# commented since done via toxenv--- pip install -r requirements/OpenedX_${EDX_PLATFORM_VERSION}.txt
ifeq ($(EDX_PLATFORM_VERSION),Ginkgo)
cd ${VIRTUAL_ENV}/src/open-edx && find "${VIRTUAL_ENV}/src/open-edx/requirements/edx/" -name "*.txt" ! -name "pre.txt" ! -name '*private.txt' ! -name 'testing*' ! -name "coverage*" ! -name '*quality*' -type f -exec pip install -r {} \;
endif
ifeq ($(EDX_PLATFORM_VERSION), Hawthorn)
cd ${VIRTUAL_ENV}/src/open-edx && pip install -r requirements/edx/testing.txt
cd ${VIRTUAL_ENV}/src/open-edx && test -f requirements/edx/appsembler.txt && pip install -r requirements/edx/appsembler.txt
endif
test: clean ## run tests in the current virtualenv
$(TEST_PRE)
py.test
$(TEST_POST)
test_course_certs: clean ## run only course_certs_extensions tests
$(TEST_PRE)
py.test appsembler_credentials_extensions/apps/course_certs_extensions/tests
$(TEST_POST)
test_badges: clean ## run only badges_extensions tests
$(TEST_PRE)
py.test appsembler_credentials_extensions/apps/badges_extensions/tests
$(TEST_POST)
test_course_extensions: clean ## run only course_extensions tests
$(TEST_PRE)
py.test appsembler_credentials_extensions/common/course_extensions/tests
$(TEST_POST)
diff_cover: test
diff-cover coverage.xml
test-all: ## run tests on every supported Python/Open_edX combination
tox -e quality
tox
validate: quality test ## run tests and quality checks
selfcheck: ## check that the Makefile is well-formed
@echo "The Makefile is well-formed."
## Localization targets
extract_translations: ## extract strings to be translated, outputting .mo files
rm -rf docs/_build
cd appsembler-credentials-extensions && ../manage.py makemessages -l en -v1 -d django
cd appsembler-credentials-extensions && ../manage.py makemessages -l en -v1 -d djangojs
compile_translations: ## compile translation files, outputting .po files for each supported language
cd appsembler-credentials-extensions && ../manage.py compilemessages
detect_changed_source_translations:
cd appsembler-credentials-extensions && i18n_tool changed
pull_translations: ## pull translations from Transifex
tx pull -af --mode reviewed
push_translations: ## push source translation files (.po) from Transifex
tx push -s
dummy_translations: ## generate dummy translation (.po) files
cd appsembler_credentials_extensions && i18n_tool dummy
build_dummy_translations: extract_translations dummy_translations compile_translations ## generate and compile dummy translation files
validate_translations: build_dummy_translations detect_changed_source_translations ## validate translations