-
Notifications
You must be signed in to change notification settings - Fork 36
/
Makefile
137 lines (98 loc) · 3.29 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
DOCKER_COMPOSE := podman-compose
###############
# Build Tools #
###############
.PHONY: build develop install
build: ## build python/javascript
python -m build .
develop: ## install to site-packages in editable mode
python -m pip install --upgrade build jupyterlab pip setuptools twine wheel
python -m pip install -vvv .[develop]
install: ## install to site-packages
python -m pip install .
###########
# Testing #
###########
.PHONY: setup-infra-ubuntu setup-infra-mac setup-infra-win setup-infra-common teardown-infra-ubuntu teardown-infra-mac teardown-infra-win teardown-infra-common dockerup dockerdown dockerlogs testpy testjs test tests
setup-infra-ubuntu: dockerup
setup-infra-mac:
ci/mac/add_etc_hosts.sh
ci/mac/enable_sharing.sh
setup-infra-win:
setup-infra-common:
. ci/generate_jupyter_config.sh
teardown-infra-ubuntu: dockerdown
teardown-infra-mac:
teardown-infra-win:
teardown-infra-common:
dockerup:
${DOCKER_COMPOSE} -f ci/docker-compose.yml up -d
dockerdown:
${DOCKER_COMPOSE} -f ci/docker-compose.yml down || echo "can't teardown docker compose"
dockerlogs:
${DOCKER_COMPOSE} -f ci/docker-compose.yml logs
testpy: ## Clean and Make unit tests
python -m pytest -v jupyterfs/tests --junitxml=junit.xml --cov=jupyterfs --cov-report=xml:.coverage.xml --cov-branch --cov-fail-under=20 --cov-report term-missing
testjs: ## Clean and Make js tests
cd js; jlpm test
test: tests
tests: testpy testjs ## run the tests
###########
# Linting #
###########
.PHONY: lintpy lintjs lint fixpy fixjs fix format
lintpy: ## Lint Python with Ruff
python -m ruff check jupyterfs setup.py
python -m ruff format --check jupyterfs setup.py
lintjs: ## Lint Javascript with ESlint
cd js; jlpm lint
lint: lintpy lintjs ## run linter
fixpy: ## Autoformat Python with Ruff
python -m ruff format jupyterfs/ setup.py
fixjs: ## Autoformat JavaScript with ESlint
cd js; jlpm fix
fix: fixpy fixjs ## run black/tslint fix
format: fix
#################
# Other Checks #
#################
.PHONY: check checks check-manifest semgrep
check: checks
checks: check-manifest ## run security, packaging, and other checks
check-manifest: ## run manifest checker for sdist
check-manifest -v
semgrep: ## run semgrep
semgrep ci --config auto
################
# Distribution #
################
.PHONY: dist publishpy publishjs publish
dist: build ## create dists
python -m twine check dist/*
publishpy: ## dist to pypi
python -m twine upload dist/* --skip-existing
publishjs: ## dist to npm
cd js; npm publish || echo "can't publish - might already exist"
publish: dist publishpy publishjs ## dist to pypi and npm
############
# Cleaning #
############
.PHONY: clean
clean: ## clean the repository
find . -name "__pycache__" | xargs rm -rf
find . -name "*.pyc" | xargs rm -rf
find . -name ".ipynb_checkpoints" | xargs rm -rf
rm -rf .coverage coverage *.xml build dist *.egg-info lib node_modules .pytest_cache *.egg-info
rm -rf jupyterfs/labextension jupyterfs/nbextension/static/index*
cd js && jlpm clean
git clean -fd
###########
# Helpers #
###########
# Thanks to Francoise at marmelab.com for this
.DEFAULT_GOAL := help
.PHONY: help
help:
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
print-%:
@echo '$*=$($*)'