-
Notifications
You must be signed in to change notification settings - Fork 304
/
Makefile
151 lines (123 loc) · 4.63 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
.PHONY: clean-pyc clean-build docs clean
help:
@echo "clean - remove all build, test, coverage and Python artifacts"
@echo "clean-build - remove build artifacts"
@echo "clean-pyc - remove Python file artifacts"
@echo "clean-test - remove test and coverage artifacts"
@echo "lint - check style with pep8"
@echo "test - run tests the default Python"
@echo "test-bdd - run BDD tests only"
@echo "test-nobdd - run non-BDD tests only"
@echo "assets - build all JS/CSS assets"
@echo "coverage - check code coverage quickly with the default Python"
@echo "docs - generate Sphinx HTML documentation, including API docs"
@echo "release - package and upload a release, options: format=[gztar,zip]"
@echo "dist - package locally, options: format=[gztar,zip]"
@echo "install - install the package to the active Python's site-packages"
@echo "msgids - generates source .po files for CrowdIn"
# used for release and dist targets
format?=gztar
clean: clean-build clean-pyc clean-test clean-assets
clean-build:
rm -fr build/
rm -fr dist/
rm -rf .kalite_dist_tmp
rm -fr .eggs/
rm -fr .pip-temp/
rm -fr kalite/database/templates
rm -fr kalite/static-libraries/docs
find kalite/packages/dist/* -maxdepth 0 -type d -exec rm -fr {} +
find . -name '*.egg-info' -exec rm -fr {} +
find . -name '*.egg' -exec rm -f {} +
clean-pyc:
find . -name '*.pyc' -exec rm -f {} +
find . -name '*.pyo' -exec rm -f {} +
find . -name '*~' -exec rm -f {} +
find . -name '__pycache__' -exec rm -fr {} +
clean-test:
rm -fr .tox/
rm -f .coverage
rm -fr htmlcov/
clean-assets:
# This is only relevant for npm<5
# https://github.com/learningequality/ka-lite/issues/5519
# npm cache clean
rm -rf kalite/database/templates/
rm -rf .kalite_dist_tmp
lint:
pep8 kalite
jshint kalite/*/static/js/*/
test:
bin/kalite manage test --bdd-only
test-bdd: docs
bin/kalite manage test --bdd-only
test-nobdd:
bin/kalite manage test --no-bdd
test-all:
@echo "Not supported yet"
# tox
coverage:
coverage run --source kalite bin/kalite test
coverage report -m
docs:
# rm -f docs/ka-lite.rst
# rm -f docs/modules.rst
# sphinx-apidoc -o docs/ ka-lite-gtk
$(MAKE) -C docs clean
$(MAKE) -C docs html
cp -Rf docs/_build/html kalite/static-libraries/docs/
# open docs/_build/html/index.html
# Runs separately from the docs command for now because of Windows issues
man:
cli2man bin/kalite -o docs/kalite.1.gz
assets:
node --version | grep -q v6 || ( echo "Only tested to support Node.js v6" && exit 1 )
npm install --production
node build.js
KALITE_HOME=.kalite_dist_tmp bin/kalite manage syncdb --noinput
KALITE_HOME=.kalite_dist_tmp bin/kalite manage migrate
rm -rf kalite/database/templates/
mkdir -p kalite/database/templates/
cp .kalite_dist_tmp/database/data.sqlite kalite/database/templates/
bin/kalite manage retrievecontentpack empty en --template
msgids:
export IGNORE_PATTERNS="*/kalite/static-libraries/*,*/LC_MESSAGES/*,*/kalite/packages/dist/*,*/kalite/packages/bundled/django/*,*/kalite/*/bundles/bundle*.js,*/kalite/*/js/i18n/*.js" ;\
cd kalite ;\
kalite manage makemessages -len --no-obsolete ;\
kalite manage makemessages -len --no-obsolete --domain=djangojs
release: dist man
ls -l dist
echo "Uploading dist/* to PyPi, using twine"
twine upload -s --sign-with gpg2 dist/*
sdist: clean docs assets
# Building assets currently creates pyc files in the source dirs,
# so we should delete those...
make clean-pyc
python setup.py sdist --formats=$(format) --static
python setup.py sdist --formats=$(format)
dist: clean docs assets
# Building assets currently creates pyc files in the source dirs,
# so we should delete those...
make clean-pyc
python setup.py sdist --formats=$(format)
python setup.py bdist_wheel
pip install -t kalite/packages/dist -r "requirements.txt"
rm -rf kalite/packages/dist/*.dist-info # pip installs from PyPI will complain if we have more than one dist-info directory.
rm -r kalite/packages/dist/man kolibri/dist/bin || true # remove the two folders introduced by pip 10
python setup.py sdist --formats=$(format) --static
python setup.py bdist_wheel --static --no-clean
ls -l dist
pex:
pex -m kalite dist/ka_lite_static*.whl --disable-cache -o dist/ka-lite-static$$(git describe).pex
ls -l dist
install: clean
python setup.py install
dockerwriteversion:
python -c "import kalite; print(kalite.__version__)" > kalite/VERSION
dockerenvclean:
docker container prune -f
docker image prune -f
dockerenvbuild: dockerwriteversion
docker image build -t learningequality/kalite:$$(cat kalite/VERSION) -t learningequality/kalite:latest .
dockerenvdist: dockerwriteversion
docker run -v $$PWD/dist:/kalitedist learningequality/kalite:$$(cat kalite/VERSION)