forked from mu-editor/mu
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Makefile
131 lines (112 loc) · 4.45 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
XARGS := xargs -0 $(shell test $$(uname) = Linux && echo -r)
GREP_T_FLAG := $(shell test $$(uname) = Linux && echo -T)
export PYFLAKES_BUILTINS=_
all:
@echo "\nThere is no default Makefile target right now. Try:\n"
@echo "make run - run the local development version of Mu."
@echo "make clean - reset the project and remove auto-generated assets."
@echo "make flake8 - run the flake8 code checker."
@echo "make test - run the test suite."
@echo "make coverage - view a report on test coverage."
@echo "make tidy - tidy code with the 'black' formatter."
@echo "make check - run all the checkers and tests."
@echo "make dist - make a dist/wheel for the project."
@echo "make publish-test - publish the project to PyPI test instance."
@echo "make publish-live - publish the project to PyPI production."
@echo "make docs - run sphinx to create project documentation."
@echo "make translate - create a messages.pot file for translations."
@echo "make translateall - as with translate but for all API strings."
@echo "make win32 - create a 32bit Windows installer for Mu."
@echo "make win64 - create a 64bit Windows installer for Mu."
@echo "make macos - create a macOS native application for Mu."
@echo "make video - create an mp4 video representing code commits.\n"
clean:
rm -rf build
rm -rf dist
rm -rf .coverage
rm -rf .eggs
rm -rf *.egg-info
rm -rf docs/_build
rm -rf .pytest_cache
rm -rf lib
rm -rf *.mp4
rm -rf .git/avatar/*
find . \( -name '*.py[co]' -o -name dropin.cache \) -delete
find . \( -name '*.bak' -o -name dropin.cache \) -delete
find . \( -name '*.tgz' -o -name dropin.cache \) -delete
find . | grep -E "(__pycache__)" | xargs rm -rf
run: clean
ifeq ($(VIRTUAL_ENV),)
@echo "\n\nCannot run Mu. Your Python virtualenv is not activated."
else
python run.py
endif
flake8:
flake8
test: clean
export LANG=en_GB.utf8
pytest --random-order
coverage: clean
export LANG=en_GB.utf8
pytest --random-order --cov-config .coveragerc --cov-report term-missing --cov=mu tests/
tidy: clean
@echo "\nTidying code with black..."
black -l 79 setup.py
black -l 79 make.py
black -l 79 mu
black -l 79 package
black -l 79 tests
black -l 79 utils
black: clean
python make.py black
check: clean black flake8 coverage
dist: check
@echo "\nChecks pass, good to package..."
python setup.py sdist bdist_wheel
publish-test: dist
@echo "\nPackaging complete... Uploading to PyPi..."
twine upload -r test --sign dist/*
publish-live: dist
@echo "\nPackaging complete... Uploading to PyPi..."
twine upload --sign dist/*
docs: clean
$(MAKE) -C docs html
@echo "\nDocumentation can be found here:"
@echo file://`pwd`/docs/_build/html/index.html
@echo "\n"
translate:
find . \( -name _build -o -name var -o -path ./docs -o -path ./mu/contrib -o -path ./utils -o -path ./mu/modes/api \) -type d -prune -o -name '*.py' -print0 | $(XARGS) pygettext
@echo "\nNew messages.pot file created."
@echo "Remember to update the translation strings found in the locale directory."
translateall:
pygettext mu/* mu/debugger/* mu/modes/* mu/resources/*
@echo "\nNew messages.pot file created."
@echo "Remember to update the translation strings found in the locale directory."
win32: check
@echo "\nBuilding 32bit Windows MSI installer."
python make.py win32
win64: check
@echo "\nBuilding 64bit Windows MSI installer."
python make.py win64
macos: check
@echo "\nFetching wheels."
python -m mu.wheels
@echo "\nPackaging Mu into a macOS native application."
python -m virtualenv venv-pup
# Don't activate venv-pup because:
# 1. Not really needed.
# 2. Previously active venv would be "gone" on venv-pup deactivation.
./venv-pup/bin/pip install pup
# HACK
# 1. Use a custom dmgbuild to address `hdiutil detach` timeouts.
./venv-pup/bin/pip uninstall -y dmgbuild
./venv-pup/bin/pip install git+https://github.com/tmontes/dmgbuild.git@mu-pup-ci-hack
./venv-pup/bin/pup package --launch-module=mu --nice-name="Mu Editor" --icon-path=./package/icons/mac_icon.icns --license-path=./LICENSE .
rm -r venv-pup
ls -la ./build/pup/
ls -la ./dist/
video: clean
@echo "\nFetching contributor avatars."
python utils/avatar.py
@echo "\nMaking video of source commits."
gource --user-image-dir .git/avatar/ --title "The Making of Mu" --logo docs/icon_small.png --font-size 24 --file-idle-time 0 --key -1280x720 -s 0.1 --auto-skip-seconds .1 --multi-sampling --stop-at-end --hide mouse,progress --output-ppm-stream - --output-framerate 30 | ffmpeg -y -r 30 -f image2pipe -vcodec ppm -i - -b 65536K movie.mp4