-
Notifications
You must be signed in to change notification settings - Fork 26
Expand file tree
/
Copy pathMakefile
More file actions
133 lines (102 loc) · 4.87 KB
/
Makefile
File metadata and controls
133 lines (102 loc) · 4.87 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
.PHONY: clean compile_translations coverage docs dummy_translations \
extract_translations fake_translations help piptools pull_translations push_translations \
quality requirements requirements_python selfcheck test test-all 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"
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
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
# Define PIP_COMPILE_OPTS=-v to get more information during make upgrade.
PIP_COMPILE = pip-compile --upgrade $(PIP_COMPILE_OPTS)
upgrade: export CUSTOM_COMPILE_COMMAND=make upgrade
upgrade: ## update the requirements/*.txt files with the latest packages satisfying requirements/*.in
pip install -qr requirements/pip-tools.txt
# Make sure to compile files after any other files they include!
$(PIP_COMPILE) --allow-unsafe -o requirements/pip.txt requirements/pip.in
$(PIP_COMPILE) -o requirements/pip-tools.txt requirements/pip-tools.in
pip install -qr requirements/pip.txt
pip install -qr requirements/pip-tools.txt
$(PIP_COMPILE) -o requirements/base.txt requirements/base.in
$(PIP_COMPILE) -o requirements/test.txt requirements/test.in
$(PIP_COMPILE) -o requirements/quality.txt requirements/quality.in
$(PIP_COMPILE) -o requirements/ci.txt requirements/ci.in
$(PIP_COMPILE) -o requirements/dev.txt requirements/dev.in
$(PIP_COMPILE) -o requirements/doc.txt requirements/doc.in
# Let tox control the Django version for tests
sed '/^[dD]jango==/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
install_mysql: ## install MySQL for running tests.
@echo "\n\nThe environment variable EDXAGG_MYSQL_PASSWORD should be set to the value"
@echo "of the MySQL root user password. For more options see test_settings.py.\n\n"
sudo apt-get -y install mysql-server mysql-client
sudo service mysql restart
piptools: ## install pinned version of pip-compile and pip-sync
pip install -r requirements/pip.txt
pip install -r requirements/pip-tools.txt
requirements: piptools ## install test requirements locally
pip-sync requirements/ci.txt
requirements_python: piptools ## install all requirements locally
pip-sync requirements/dev.txt requirements/private.*
test: clean ## run tests in the current virtualenv
pytest
diff_cover: test
diff-cover coverage.xml
test-all: ## run tests on every supported Python/Django 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 openedx-completion-aggregator && ../manage.py makemessages -l en -v1 -d django
cd openedx-completion-aggregator && ../manage.py makemessages -l en -v1 -d djangojs
compile_translations: ## compile translation files, outputting .po files for each supported language
cd openedx-completion-aggregator && ../manage.py compilemessages
detect_changed_source_translations:
cd openedx-completion-aggregator && 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 completion_aggregator && 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
sort_imports:
isort --recursive tests test_utils completion_aggregator manage.py setup.py test_settings.py
mysql: ## run mysql database for tests
docker run --rm -it \
--name mysql \
-p 3307:3306 \
-e MYSQL_ROOT_PASSWORD=rootpw \
mysql:8 \
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_unicode_ci