forked from vizzuhq/ipyvizzu
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
193 lines (137 loc) · 5.28 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
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
PACKAGE = ipyvizzu
OS_TYPE = linux
PYTHON_BIN = python3
BIN_PATH = bin
ifeq ($(OS), Windows_NT)
OS_TYPE = windows
PYTHON_BIN = python
BIN_PATH = Scripts
endif
.PHONY: clean \
clean-dev update-dev-req install-dev-req install-kernel install touch-dev \
clean-dev-js touch-dev-js \
check format check-format check-lint check-typing clean-test test \
check-js format-js check-format-js lint-js check-lint-js \
clean-doc doc deploy \
clean-build set-version restore-version build-release check-release release release-wo-restore
VIRTUAL_ENV = .venv_ipyvizzu
DEV_BUILD_FLAG = $(VIRTUAL_ENV)/DEV_BUILD_FLAG
DEV_JS_BUILD_FLAG = $(VIRTUAL_ENV)/DEV_JS_BUILD_FLAG
clean: clean-dev clean-dev-js clean-test clean-doc clean-build
# init
clean-dev:
$(PYTHON_BIN) -c "import os, shutil;shutil.rmtree('$(VIRTUAL_ENV)') if os.path.exists('$(VIRTUAL_ENV)') else print('Nothing to be done for \'clean-dev\'')"
clean-dev-js:
$(PYTHON_BIN) -c "import os, shutil;shutil.rmtree('node_modules') if os.path.exists('node_modules') else print('Nothing to be done for \'clean-dev-js\'')"
update-dev-req: $(DEV_BUILD_FLAG)
$(VIRTUAL_ENV)/$(BIN_PATH)/pip-compile --upgrade dev-requirements.in
install-dev-req:
$(VIRTUAL_ENV)/$(BIN_PATH)/pip install -r dev-requirements.txt
install-kernel:
$(VIRTUAL_ENV)/$(BIN_PATH)/ipython kernel install --user --name "$(VIRTUAL_ENV)"
install:
$(VIRTUAL_ENV)/$(BIN_PATH)/pip install --use-pep517 .
touch-dev:
$(VIRTUAL_ENV)/$(BIN_PATH)/$(PYTHON_BIN) tools/make/touch.py -f $(DEV_BUILD_FLAG)
touch-dev-js:
$(VIRTUAL_ENV)/$(BIN_PATH)/$(PYTHON_BIN) tools/make/touch.py -f $(DEV_JS_BUILD_FLAG)
dev: $(DEV_BUILD_FLAG)
dev-js: $(DEV_BUILD_FLAG) $(DEV_JS_BUILD_FLAG)
$(DEV_BUILD_FLAG):
$(PYTHON_BIN) -m venv $(VIRTUAL_ENV)
$(VIRTUAL_ENV)/$(BIN_PATH)/$(PYTHON_BIN) -m pip install --upgrade pip
$(MAKE) -f Makefile install
$(MAKE) -f Makefile install-dev-req
$(MAKE) -f Makefile install-kernel
$(VIRTUAL_ENV)/$(BIN_PATH)/pre-commit install --hook-type pre-commit --hook-type pre-push
$(MAKE) -f Makefile touch-dev
$(DEV_JS_BUILD_FLAG):
npm install ./tools/javascripts/
$(MAKE) -f Makefile touch-dev-js
# ci
check: check-format check-lint check-typing test
format: $(DEV_BUILD_FLAG)
$(VIRTUAL_ENV)/$(BIN_PATH)/black src tests tools setup.py
$(VIRTUAL_ENV)/$(BIN_PATH)/black -l 70 docs
$(VIRTUAL_ENV)/$(BIN_PATH)/$(PYTHON_BIN) tools/mdformat/mdformat.py $(VIRTUAL_ENV)/$(BIN_PATH)/mdformat \
--wrap 80 \
--end-of-line keep \
--line-length 70 \
docs README.md CONTRIBUTING.md CODE_OF_CONDUCT.md
check-format: $(DEV_BUILD_FLAG)
$(VIRTUAL_ENV)/$(BIN_PATH)/black --check src tests tools setup.py
$(VIRTUAL_ENV)/$(BIN_PATH)/black --check -l 70 docs
$(VIRTUAL_ENV)/$(BIN_PATH)/$(PYTHON_BIN) tools/mdformat/mdformat.py $(VIRTUAL_ENV)/$(BIN_PATH)/mdformat \
--check \
--wrap 80 \
--end-of-line keep \
--line-length 70 \
docs README.md CONTRIBUTING.md CODE_OF_CONDUCT.md
check-lint: $(DEV_BUILD_FLAG)
$(VIRTUAL_ENV)/$(BIN_PATH)/pylint src tests tools setup.py
check-typing: $(DEV_BUILD_FLAG)
$(VIRTUAL_ENV)/$(BIN_PATH)/mypy src tests tools setup.py
clean-test:
ifeq ($(OS_TYPE), windows)
if exist tests\coverage ( rd /s /q tests\coverage )
else
rm -rf tests/coverage
endif
test: $(DEV_BUILD_FLAG)
$(VIRTUAL_ENV)/$(BIN_PATH)/coverage run \
--data-file tests/coverage/.coverage --branch --source ipyvizzu -m unittest discover tests
$(VIRTUAL_ENV)/$(BIN_PATH)/coverage html \
--data-file tests/coverage/.coverage -d tests/coverage
$(VIRTUAL_ENV)/$(BIN_PATH)/coverage report \
--data-file tests/coverage/.coverage -m --fail-under=100
check-js: $(DEV_JS_BUILD_FLAG)
cd tools/javascripts && \
npm run check
format-js: $(DEV_JS_BUILD_FLAG)
cd tools/javascripts && \
npm run prettier
check-format-js: $(DEV_JS_BUILD_FLAG)
cd tools/javascripts && \
npm run check-prettier
lint-js: $(DEV_JS_BUILD_FLAG)
cd tools/javascripts && \
npm run eslint
check-lint-js: $(DEV_JS_BUILD_FLAG)
cd tools/javascripts && \
npm run check-eslint
# doc
clean-doc:
ifeq ($(OS_TYPE), windows)
if exist site ( rd /s /q site )
for /d /r docs %%d in (.ipynb_checkpoints) do @if exist "%%d" rd /s /q "%%d"
else
rm -rf site
rm -rf `find docs -name '.ipynb_checkpoints'`
endif
doc: $(DEV_BUILD_FLAG) $(DEV_JS_BUILD_FLAG)
$(VIRTUAL_ENV)/$(BIN_PATH)/mkdocs build -f ./tools/mkdocs/mkdocs.yml
deploy: $(DEV_BUILD_FLAG) $(DEV_JS_BUILD_FLAG) install
. $(VIRTUAL_ENV)/$(BIN_PATH)/activate; $(PYTHON_BIN) tools/release/deploy.py
# release
clean-build:
ifeq ($(OS_TYPE), windows)
if exist build ( rd /s /q build )
if exist dist ( rd /s /q dist )
for /d /r src %%d in (*.egg-info) do @if exist "%%d" rd /s /q "%%d"
for /d /r . %%d in (__pycache__) do @if exist "%%d" rd /s /q "%%d"
else
rm -rf build
rm -rf dist
rm -rf `find src -name '*.egg-info'`
rm -rf `find . -name '__pycache__'`
endif
set-version: $(DEV_BUILD_FLAG)
$(VIRTUAL_ENV)/$(BIN_PATH)/$(PYTHON_BIN) tools/release/set_version.py False
restore-version: $(DEV_BUILD_FLAG)
$(VIRTUAL_ENV)/$(BIN_PATH)/$(PYTHON_BIN) tools/release/set_version.py True
build-release: $(DEV_BUILD_FLAG)
$(VIRTUAL_ENV)/$(BIN_PATH)/$(PYTHON_BIN) -m build
check-release: $(DEV_BUILD_FLAG)
$(VIRTUAL_ENV)/$(BIN_PATH)/$(PYTHON_BIN) -m twine check dist/*.tar.gz dist/*.whl
release-wo-restore: clean-build set-version build-release check-release
release: release-wo-restore restore-version