generated from litestar-org/litestar-hello-world-stale
-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
139 lines (112 loc) · 5.43 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
SHELL := /bin/bash
# =============================================================================
# Variables
# =============================================================================
.DEFAULT_GOAL:=help
.ONESHELL:
USING_PDM = $(shell grep "tool.pdm" pyproject.toml && echo "yes")
ENV_PREFIX = $(shell python3 -c "if __import__('pathlib').Path('.venv/3.11/lib').exists(): print('.venv/3.11/lib/')")
VENV_EXISTS = $(shell python3 -c "if __import__('pathlib').Path('.venv/bin/activate').exists(): print('yes')")
REPO_INFO ?= $(shell git config --get remote.origin.url)
COMMIT_SHA ?= git-$(shell git rev-parse --short HEAD)
PDM_OPTS ?=
PDM ?= pdm $(PDM_OPTS)
PDM_RUN_BIN = $(PDM) run
SPHINXBUILD = sphinx-build
SPHINXAUTOBUILD = sphinx-autobuild
.EXPORT_ALL_VARIABLES:
.PHONY: help upgrade install-pre-commit install-pdm install
.PHONY: fmt-fix test coverage check-all lint fmt-check
.PHONY: docs-install docs-clean docs-serve docs-build
.PHONY: clean run-dev-server run-dev-frontend develop destroy
help: ## Display this help text for Makefile
@awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m<target>\033[0m\n"} /^[a-zA-Z0-9_-]+:.*?##/ { printf " \033[36m%-15s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST)
upgrade: ## Upgrade all dependencies to the latest stable versions
@if [ "$(USING_PDM)" ]; then $(PDM) update; fi
@echo "Dependencies Updated"
# =============================================================================
# Developer Utils
# =============================================================================
install-pdm: ## Install latest version of PDM
@echo "Installing PDM..."
@curl -sSL https://pdm-project.org/install-pdm.py | python3 -
install-pre-commit: ## Install pre-commit and install hooks
@echo "Installing pre-commit"
@$(PDM) add pre-commit
@$(PDM_RUN_BIN) pre-commit install --install-hooks --all
@$(PDM_RUN_BIN) pre-commit install --hook-type commit-msg
@echo "pre-commit installed"
install: ## Install all dependencies
@echo "Installing..."
@command -v $(PDM) > /dev/null || (echo "PDM not found. Installing..." && $(MAKE) install-pdm)
$(MAKE) install-pre-commit
# =============================================================================
# Tests, Linting, Coverage
# =============================================================================
lint: ## Runs pre-commit hooks; includes ruff linting, codespell, black
$(PDM_RUN_BIN) pre-commit run --all-files
fmt-check: ## Runs black in check mode (no changes)
$(PDM_RUN_BIN) black --check --fast .
fmt-fix: ## Runs black, makes changes where necessary
$(PDM_RUN_BIN) black --line-length 120 .
test: ## Run the tests
$(PDM_RUN_BIN) pytest tests
coverage: ## Run the tests and generate coverage report
$(PDM_RUN_BIN) pytest tests --cov=app
$(PDM_RUN_BIN) coverage html
$(PDM_RUN_BIN) coverage xml
check-all: lint test fmt-check coverage ## Run all linting, tests, and coverage checks
# =============================================================================
# Docs
# =============================================================================
docs-install: ## Install docs dependencies
$(PDM) env use python3 && $(PDM) install --with dev,docs
docs-clean: ## Dump the existing built docs
rm -rf docs/_build
docs-serve: docs-clean ## Serve the docs locally
$(PDM_RUN_BIN) $(SPHINXAUTOBUILD) docs docs/_build/ -j auto --watch app --watch docs --watch tests --watch CONTRIBUTING.rst --port 8002
docs: docs-clean ## Dump the existing built docs and rebuild them
$(PDM_RUN_BIN) $(SPHINXBUILD) docs docs/_build/ -E -a -j auto --keep-going
# =============================================================================
# Main
# =============================================================================
clean: ## Autogenerated File Cleanup
rm -rf .scannerwork/
rm -rf .pytest_cache
rm -rf .ruff_cache
rm -rf .hypothesis
rm -rf build/
rm -rf dist/
rm -rf .eggs/
find . -name '*.egg-info' -exec rm -rf {} +
find . -name '*.egg' -exec rm -f {} +
find . -name '*.pyc' -exec rm -f {} +
find . -name '*.pyo' -exec rm -f {} +
find . -name '*~' -exec rm -f {} +
find . -name '__pycache__' -exec rm -rf {} +
find . -name '.ipynb_checkpoints' -exec rm -rf {} +
rm -rf .coverage
rm -rf coverage.xml
rm -rf coverage.json
rm -rf htmlcov/
rm -rf .pytest_cache
rm -rf tests/.pytest_cache
rm -rf tests/**/.pytest_cache
rm -rf .mypy_cache
find tools/downloads -type f -delete
$(MAKE) docs-clean
destroy: ## Destroy the virtual environment
rm -rf .venv
develop: install ## Install the project in dev mode.
@if ! $(PDM) --version > /dev/null; then echo 'PDM is required, installing...'; $(MAKE) install-pdm; fi
@if [ "$(VENV_EXISTS)" ]; then echo "Removing existing virtual environment"; fi
if [ "$(VENV_EXISTS)" ]; then $(MAKE) destroy; fi
if [ "$(VENV_EXISTS)" ]; then $(MAKE) clean; fi
if [ "$(USING_PDM)" ]; then $(PDM) config venv.in_project true && python3 -m venv --copies .venv && source .venv/bin/activate && .venv/bin/pip install -U wheel setuptools cython pip; fi
if [ "$(USING_PDM)" ]; then $(PDM) install -G:all; fi
if [ "$(VENV_EXISTS)" && ! -f .env ]; then cp .env.example .env; fi
@echo "=> Install complete! Note: If you want to re-install re-run 'make develop'"
run-dev-server: ## Run the app in dev mode
$(PDM_RUN_BIN) litestar run --debug
run-dev-frontend: ## Run the app frontend in dev mode
$(PDM_RUN_BIN) tailwindcss -i src/static/input.css -o src/static/style.css --watch