|
1 | | -help: |
2 | | - @echo "Call a specific subcommand:" |
3 | | - @echo |
4 | | - @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) \ |
5 | | - | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' |
6 | | - @echo |
| 1 | +.DEFAULT_GOAL := help |
7 | 2 |
|
8 | | -default: help |
| 3 | +help: ## Display this help text |
| 4 | + @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) |
| 5 | + |
| 6 | +# ============================================================================= |
| 7 | +# Docker State |
| 8 | +# ============================================================================= |
9 | 9 |
|
10 | 10 | .state/docker-build-web: Dockerfile pyproject.toml |
11 | | - # Build web container for this project |
12 | 11 | docker compose build --force-rm web |
13 | | - |
14 | | - # Mark the state so we don't rebuild this needlessly. |
15 | 12 | mkdir -p .state && touch .state/docker-build-web |
16 | 13 |
|
17 | 14 | .state/db-migrated: |
18 | | - # Call migrate target |
19 | | - make migrate |
20 | | - |
21 | | - # Mark the state so we don't rebuild this needlessly. |
| 15 | + make migrate |
22 | 16 | mkdir -p .state && touch .state/db-migrated |
23 | 17 |
|
24 | 18 | .state/db-initialized: .state/docker-build-web .state/db-migrated |
25 | | - # Load all fixtures |
26 | 19 | docker compose run --rm web ./manage.py loaddata fixtures/*.json |
27 | | - |
28 | | - # Mark the state so we don't rebuild this needlessly. |
29 | 20 | mkdir -p .state && touch .state/db-initialized |
30 | 21 |
|
| 22 | +# ============================================================================= |
| 23 | +# Development |
| 24 | +# ============================================================================= |
| 25 | + |
| 26 | +##@ Development |
| 27 | + |
31 | 28 | serve: .state/db-initialized ## Start the application |
32 | 29 | docker compose up --remove-orphans |
33 | 30 |
|
34 | 31 | migrations: .state/db-initialized ## Generate migrations from models |
35 | | - docker compose run --rm web ./manage.py makemigrations |
36 | | - |
| 32 | + docker compose run --rm web ./manage.py makemigrations |
| 33 | + |
37 | 34 | migrate: .state/docker-build-web ## Run Django migrate |
38 | | - docker compose run --rm web ./manage.py migrate |
| 35 | + docker compose run --rm web ./manage.py migrate |
39 | 36 |
|
40 | | -manage: .state/db-initialized ## Run Django manage to accept arbitrary arguments |
| 37 | +manage: .state/db-initialized ## Run arbitrary manage.py commands |
41 | 38 | docker compose run --rm web ./manage.py $(filter-out $@,$(MAKECMDGOALS)) |
42 | 39 |
|
43 | 40 | shell: .state/db-initialized ## Open Django interactive shell |
44 | 41 | docker compose run --rm web ./manage.py shell |
45 | 42 |
|
| 43 | +docker_shell: .state/db-initialized ## Open bash in web container |
| 44 | + docker compose run --rm web /bin/bash |
| 45 | + |
46 | 46 | clean: ## Clean up the environment |
47 | 47 | docker compose down -v |
48 | | - rm -f .state/docker-build-web .state/db-initialized .state/db-migrated |
| 48 | + rm -f .state/docker-build-web .state/db-initialized .state/db-migrated |
| 49 | + |
| 50 | +# ============================================================================= |
| 51 | +# Code Quality |
| 52 | +# ============================================================================= |
| 53 | + |
| 54 | +##@ Code Quality |
49 | 55 |
|
50 | | -test: .state/db-initialized ## Run tests |
| 56 | +lint: ## Run ruff linter (--fix enabled) |
| 57 | + @if command -v ruff >/dev/null 2>&1; then ruff check --fix .; else docker compose run --rm web ruff check --fix .; fi |
| 58 | + |
| 59 | +fmt: ## Run ruff formatter |
| 60 | + @if command -v ruff >/dev/null 2>&1; then ruff format .; else docker compose run --rm web ruff format .; fi |
| 61 | + |
| 62 | +test: .state/db-initialized ## Run test suite |
51 | 63 | docker compose run --rm web ./manage.py test |
52 | 64 |
|
53 | | -docker_shell: .state/db-initialized ## Open a bash shell in the web container |
54 | | - docker compose run --rm web /bin/bash |
| 65 | +ci: lint fmt test ## Run lint, fmt, then tests |
55 | 66 |
|
56 | | -.PHONY: help serve migrations migrate manage shell clean test docker_shell |
| 67 | +.PHONY: help serve migrations migrate manage shell docker_shell clean |
| 68 | +.PHONY: lint fmt test ci |
0 commit comments