forked from mu-editor/mu
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
140 lines (121 loc) · 4.81 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
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 docs/_build
rm -rf .pytest_cache
rm -rf lib
rm -rf pynsist_pkgs
rm -rf pynsist_tkinter*
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 win_installer.py
black -l 79 make.py
black -l 79 mu
black -l 79 package
black -l 79 tests
black -l 79 utils
black: clean
@echo "\nChecking code with black..."
black --check -l 79 setup.py
black --check -l 79 win_installer.py
black --check -l 79 make.py
black --check -l 79 mu
black --check -l 79 package
black --check -l 79 tests
black --check -l 79 utils
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 installer."
python win_installer.py 32 setup.py
win64: check
@echo "\nBuilding 64bit Windows installer."
python win_installer.py 64 setup.py
macos:
@echo "\nPackaging Mu into a macOS native application."
python -m venv 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 dmgbuild
./venv-pup/bin/pip install git+https://github.com/tmontes/dmgbuild.git@mu-pup-ci-hack
# Run pup with an "active venv"-like PATH...
# ...for pup 1.0.0a7 to find the dmgbuild command.
PATH="${PWD}/venv-pup/bin:${PATH}" ./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 ~/Pictures/icon.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