forked from crim-ca/dlm-extension
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
145 lines (110 loc) · 3.06 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
#* Variables
SHELL ?= /usr/bin/env bash
PYTHON ?= python
PYTHONPATH := `pwd`
POETRY ?= poetry
#* Poetry
.PHONY: poetry-install
poetry-install:
curl -sSL https://install.python-poetry.org | $(PYTHON) -
.PHONY: poetry-remove
poetry-remove:
curl -sSL https://install.python-poetry.org | $(PYTHON) - --uninstall
.PHONY: poetry-plugins
poetry-plugins:
$(POETRY) self add poetry-plugin-up
.PHONY: poetry-env
poetry-env:
$(POETRY) config virtualenvs.in-project true
.PHONY: publish
publish:
$(POETRY) publish --build
#* Installation
.PHONY: install
install: poetry-env
$(POETRY) lock -n && poetry export --without-hashes > requirements-lock.txt
$(POETRY) install -n
-poetry run mypy --install-types --non-interactive ./
.PHONY: install-dev
install-dev: poetry-env install
$(POETRY) install -n --with dev
.PHONY: pre-commit-install
pre-commit-install:
$(POETRY) run pre-commit install
#* Formatters
.PHONY: codestyle
codestyle:
$(POETRY) run ruff format --config=pyproject.toml stac_model tests
.PHONY: format
format: codestyle
#* Linting
.PHONY: test
test:
PYTHONPATH=$(PYTHONPATH) poetry run pytest -c pyproject.toml --cov-report=html --cov=stac_model tests/
.PHONY: check
check: check-examples check-markdown check-lint check-mypy check-safety
.PHONY: check-all
check-all: check
.PHONY: mypy
mypy:
$(POETRY) run mypy --config-file pyproject.toml ./
.PHONY: check-mypy
check-mypy: mypy
.PHONY: check-safety
check-safety:
$(POETRY) check
$(POETRY) run safety check --full-report
$(POETRY) run bandit -ll --recursive stac_model tests
.PHONY: lint
lint:
$(POETRY) run ruff --config=pyproject.toml ./
$(POETRY) run pydocstyle --count --config=pyproject.toml ./
$(POETRY) run pydoclint --config=pyproject.toml ./
.PHONY: check-lint
check-lint: lint
.PHONY: format-lint
format-lint:
$(POETRY) run ruff --config=pyproject.toml --fix ./
.PHONY: install-npm
install-npm:
npm install
.PHONY: check-markdown
check-markdown: install-npm
npm run check-markdown
.PHONY: format-markdown
format-markdown: install-npm
npm run format-markdown
.PHONY: check-examples
check-examples: install-npm
npm run check-examples
.PHONY: format-examples
format-examples: install-npm
npm run format-examples
FORMATTERS := lint markdown examples
$(addprefix fix-, $(FORMATTERS)): fix-%: format-%
.PHONY: lint-all
lint-all: lint mypy check-safety check-markdown
.PHONY: update-dev-deps
update-dev-deps:
$(POETRY) up --only=dev-dependencies --latest
#* Cleaning
.PHONY: pycache-remove
pycache-remove:
find . | grep -E "(__pycache__|\.pyc|\.pyo$$)" | xargs rm -rf
.PHONY: dsstore-remove
dsstore-remove:
find . | grep -E ".DS_Store" | xargs rm -rf
.PHONY: mypycache-remove
mypycache-remove:
find . | grep -E ".mypy_cache" | xargs rm -rf
.PHONY: ipynbcheckpoints-remove
ipynbcheckpoints-remove:
find . | grep -E ".ipynb_checkpoints" | xargs rm -rf
.PHONY: pytestcache-remove
pytestcache-remove:
find . | grep -E ".pytest_cache" | xargs rm -rf
.PHONY: build-remove
build-remove:
rm -rf build/
.PHONY: cleanup
cleanup: pycache-remove dsstore-remove mypycache-remove ipynbcheckpoints-remove pytestcache-remove