-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathMakefile
132 lines (106 loc) · 4.38 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
.PHONY: clean clean-test clean-pyc clean-build docs help
.DEFAULT_GOAL := help
define BROWSER_PYSCRIPT
import os, webbrowser, sys
from urllib.request import pathname2url
webbrowser.open("file://" + pathname2url(os.path.abspath(sys.argv[1])))
endef
export BROWSER_PYSCRIPT
define PRINT_HELP_PYSCRIPT
import re, sys
for line in sys.stdin:
match = re.match(r'^([a-zA-Z_-]+):.*?## (.*)$$', line)
if match:
target, help = match.groups()
print("%-20s %s" % (target, help))
endef
export PRINT_HELP_PYSCRIPT
BROWSER := python -c "$$BROWSER_PYSCRIPT"
help:
@python -c "$$PRINT_HELP_PYSCRIPT" < $(MAKEFILE_LIST)
clean: clean-build clean-pyc clean-test ## remove all build, test, coverage and Python artifacts
clean-build: ## remove build artifacts
rm -fr build/
rm -fr dist/
rm -fr .eggs/
find . -name '*.egg-info' -exec rm -fr {} +
find . -name '*.egg' -exec rm -f {} +
clean-pyc: ## remove Python file artifacts
find . -name '*.pyc' -exec rm -f {} +
find . -name '*.pyo' -exec rm -f {} +
find . -name '*~' -exec rm -f {} +
find . -name '__pycache__' -exec rm -fr {} +
clean-test: ## remove test and coverage artifacts
rm -fr .tox/
rm -f .coverage
rm -fr htmlcov/
rm -fr .pytest_cache
lint: ## check style with flake8
flake8 shinyswatch tests
test: ## run tests quickly with the default Python
pytest
test-all: ## run tests on every Python version with tox
tox
coverage: ## check code coverage quickly with the default Python
coverage run --source shinyswatch -m pytest
coverage report -m
coverage html
$(BROWSER) htmlcov/index.html
# These variables are used by docs-ci (i.e. docs-render-ci) to render the site into
# a specific subdirectory of _site. This enables us to have multiple documentation
# sites for the same repository, in particular to put the dev docs at `dev/`.
DOCS_SUBDIR:=
DOCS_OUTPUT_DIR:="_site/$(DOCS_SUBDIR)"
DOCS_PROFILE:=
SHINYSWATCH_VERSION := $(shell python3 -c "import shinyswatch; print(shinyswatch.__version__)")
quarto-shinylive: ## Make sure quarto-shinylive is installed
cd docs && (test -f _extensions/quarto-ext/shinylive/shinylive.lua || quarto install extension --no-prompt quarto-ext/shinylive)
quarto-interlinks: ## Make sure quartodocs's interlinks is installed
cd docs && (test -f _extensions/machow/interlinks/interlinks.lua || quarto install extension --no-prompt machow/quartodoc)
quarto-line-highlight:
cd docs && (test -f _extensions/shafayetShafee/line-highlight/_extension.yml || quarto install extension --no-prompt shafayetShafee/line-highlight)
docs-quartodoc: quarto-shinylive quarto-interlinks quarto-line-highlight ## Build quartodoc
cd docs && python -m quartodoc build --verbose
cd docs && python -m quartodoc interlinks
docs-render: quarto-shinylive
export SHINYSWATCH_VERSION=$(SHINYSWATCH_VERSION) && \
cd docs && quarto render --profile ${DOCS_PROFILE}
docs-render-ci: quarto-shinylive
export SHINYSWATCH_VERSION=$(SHINYSWATCH_VERSION) && \
cd docs && quarto render --no-clean --output-dir $(DOCS_OUTPUT_DIR) --profile ${DOCS_PROFILE}
docs-watch: quarto-shinylive
export SHINYSWATCH_VERSION=$(SHINYSWATCH_VERSION) && \
cd docs && quarto preview --profile ${DOCS_PROFILE}
docs-ci: docs-quartodoc docs-render-ci ## Build quartodoc for CI
docs-readme: README.md ## Build README.md from index.qmd
quarto render docs/index.qmd --output README.md --output-dir . --profile readme
docs-preview: docs-quartodoc docs-watch ## Build quartodoc for preview
docs-open:
$(BROWSER) docs/_site/index.html
docs: docs-readme docs-ci docs-open ## generate quartodoc HTML documentation, including API docs
# # Perform `quarto preview` and `quartodoc build` in parallel
# watchdocs: quarto-shinylive
# cd docs && quarto preview &
# watchmedo shell-command -p 'shinyswatch/*.py' -c 'cd docs && python -m quartodoc build' -R -D . &
# wait
release: dist ## package and upload a release
twine upload dist/*
dist: clean ## builds source and wheel package
python3 setup.py sdist
python3 setup.py bdist_wheel
ls -l dist
install: dist ## install the package to the active Python's site-packages
pip uninstall -y shinyswatch
python3 -m pip install dist/shinyswatch*.whl
pyright: ## type check with pyright
pyright
check: pyright lint ## check code quality with pyright, flake8, black and isort
echo "Checking code with black."
black --check .
echo "Sorting imports with isort."
isort --check-only --diff .
format:
black .
isort .
update-bootswatch:
python3 scripts/update_themes.py