|
| 1 | +# Set the default goal to "help" so that running "make" without arguments will display the help message. |
| 2 | +.DEFAULT_GOAL := help |
| 3 | + |
| 4 | +# ==================================================================================== |
| 5 | +# HELP |
| 6 | +# ==================================================================================== |
| 7 | +# This target uses a combination of egrep, sort, and awk to parse the Makefile itself |
| 8 | +# and generate a formatted help message. It looks for lines containing '##' and |
| 9 | +# uses the text that follows as the help description for the target. |
1 | 10 | .PHONY: help
|
2 | 11 | help: ## Show this help
|
3 | 12 | @egrep -h '\s##\s' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}'
|
4 | 13 |
|
| 14 | +# ==================================================================================== |
| 15 | +# DOCKER COMPOSE MANAGEMENT |
| 16 | +# ==================================================================================== |
5 | 17 | .PHONY: docker-build
|
6 |
| -docker-build: ## Build project with compose |
| 18 | +docker-build: ## Build project Docker images using compose |
7 | 19 | docker compose build
|
8 | 20 |
|
9 | 21 | .PHONY: docker-up
|
10 | 22 | docker-up: ## Run project with compose
|
11 | 23 | docker compose up --remove-orphans
|
12 | 24 |
|
13 | 25 | .PHONY: docker-clean
|
14 |
| -docker-clean: ## Clean Reset project containers and volumes with compose |
| 26 | +docker-clean: ## Clean and reset project containers and volumes |
15 | 27 | docker compose down -v --remove-orphans | true
|
16 | 28 | docker compose rm -f | true
|
17 |
| - docker volume rm fastapi_postgres_data | true |
| 29 | + docker volume rm panettone_postgres_data | true |
18 | 30 |
|
| 31 | +# ==================================================================================== |
| 32 | +# DATABASE MIGRATIONS |
| 33 | +# ==================================================================================== |
19 | 34 | .PHONY: docker-apply-db-migrations
|
20 |
| -docker-apply-db-migrations: ## apply alembic migrations to database/schema |
21 |
| - docker compose run --rm app alembic upgrade head |
| 35 | +docker-apply-db-migrations: ## Apply alembic migrations to the database schema |
| 36 | + docker compose run --rm api1 alembic upgrade head |
22 | 37 |
|
23 | 38 | .PHONY: docker-create-db-migration
|
24 |
| -docker-create-db-migration: ## Create new alembic database migration aka database revision. Example: make docker-create-db-migration msg="add users table" |
25 |
| - docker compose up -d db | true |
26 |
| - docker compose run --no-deps app alembic revision --autogenerate -m "$(msg)" |
| 39 | +docker-create-db-migration: ## Create a new alembic database migration. Example: make docker-create-db-migration msg="add users table" |
| 40 | + docker compose up -d postgres | true |
| 41 | + docker compose run --no-deps api1 alembic revision --autogenerate -m "$(msg)" |
27 | 42 |
|
| 43 | +# ==================================================================================== |
| 44 | +# TESTING |
| 45 | +# ==================================================================================== |
28 | 46 | .PHONY: docker-test
|
29 | 47 | docker-test: ## Run project tests
|
30 |
| - docker compose -f compose.yml -f test-compose.yml run --rm app pytest tests --durations=0 -vv |
| 48 | + docker compose -f compose.yml -f test-compose.yml run --rm api1 pytest tests --durations=0 -vv |
31 | 49 |
|
32 | 50 | .PHONY: docker-test-snapshot
|
33 |
| -docker-test-snapshot: ## Run project tests with inline snapshot |
34 |
| - docker compose -f compose.yml -f test-compose.yml run --rm app pytest tests --inline-snapshot=fix |
| 51 | +docker-test-snapshot: ## Run project tests and update snapshots |
| 52 | + docker compose -f compose.yml -f test-compose.yml run --rm api1 pytest tests --inline-snapshot=fix |
35 | 53 |
|
| 54 | +# ==================================================================================== |
| 55 | +# CODE QUALITY & LINTING |
| 56 | +# ==================================================================================== |
36 | 57 | .PHONY: safety
|
37 |
| -safety: ## Check project and dependencies with safety https://github.com/pyupio/safety |
38 |
| - docker compose run --rm app safety check |
| 58 | +safety: ## Check for insecure dependencies |
| 59 | + docker compose run --rm api1 safety check |
39 | 60 |
|
40 | 61 | .PHONY: py-upgrade
|
41 |
| -py-upgrade: ## Upgrade project py files with pyupgrade library for python version 3.10 |
| 62 | +py-upgrade: ## Upgrade Python syntax to a newer version |
42 | 63 | pyupgrade --py313-plus `find app -name "*.py"`
|
43 | 64 |
|
44 | 65 | .PHONY: lint
|
45 |
| -lint: ## Lint project code. |
| 66 | +lint: ## Lint and format project code |
46 | 67 | uv run ruff check --fix .
|
47 | 68 |
|
| 69 | +# ==================================================================================== |
| 70 | +# DOCKER IMAGE BUILDING |
| 71 | +# ==================================================================================== |
48 | 72 | .PHONY: slim-build
|
49 |
| -slim-build: ## with power of docker-slim build smaller and safer images |
50 |
| - docker-slim build --compose-file docker-compose.yml --target-compose-svc app --dep-include-target-compose-svc-deps true --http-probe-exec app fastapi-sqlalchemy-asyncpg_app:latest |
| 73 | +slim-build: ## Build smaller and more secure Docker images with docker-slim |
| 74 | + docker-slim build --compose-file docker-compose.yml --target-compose-svc api1 --dep-include-target-compose-svc-deps true --http-probe-exec api1 fastapi-sqlalchemy-asyncpg_api1:latest |
51 | 75 |
|
| 76 | +# ==================================================================================== |
| 77 | +# DATABASE SEEDING |
| 78 | +# ==================================================================================== |
52 | 79 | .PHONY: docker-feed-database
|
53 |
| -docker-feed-database: ## create database objects and insert data |
54 |
| - docker compose exec db psql devdb devdb -f /home/gx/code/shakespeare_work.sql | true |
55 |
| - docker compose exec db psql devdb devdb -f /home/gx/code/shakespeare_chapter.sql | true |
56 |
| - docker compose exec db psql devdb devdb -f /home/gx/code/shakespeare_wordform.sql | true |
57 |
| - docker compose exec db psql devdb devdb -f /home/gx/code/shakespeare_character.sql | true |
58 |
| - docker compose exec db psql devdb devdb -f /home/gx/code/shakespeare_paragraph.sql | true |
59 |
| - docker compose exec db psql devdb devdb -f /home/gx/code/shakespeare_character_work.sql |
| 80 | +docker-feed-database: ## Create database objects and insert seed data |
| 81 | + docker compose exec postgres psql devdb devdb -f /home/gx/code/shakespeare_work.sql | true |
| 82 | + docker compose exec postgres psql devdb devdb -f /home/gx/code/shakespeare_chapter.sql | true |
| 83 | + docker compose exec postgres psql devdb devdb -f /home/gx/code/shakespeare_wordform.sql | true |
| 84 | + docker compose exec postgres psql devdb devdb -f /home/gx/code/shakespeare_character.sql | true |
| 85 | + docker compose exec postgres psql devdb devdb -f /home/gx/code/shakespeare_paragraph.sql | true |
| 86 | + docker compose exec postgres psql devdb devdb -f /home/gx/code/shakespeare_character_work.sql |
60 | 87 |
|
| 88 | +# ==================================================================================== |
| 89 | +# MODEL GENERATION |
| 90 | +# ==================================================================================== |
61 | 91 | .PHONY: model-generate
|
62 |
| -model-generate: ## generate sqlalchemy models from database |
| 92 | +model-generate: ## Generate SQLAlchemy models from the database schema |
63 | 93 | poetry run sqlacodegen --generator declarative postgresql://devdb: [email protected]/devdb --outfile models.py --schemas shakespeare --options nobidi
|
64 | 94 |
|
| 95 | +# ==================================================================================== |
| 96 | +# ALTERNATIVE RUNTIMES |
| 97 | +# ==================================================================================== |
65 | 98 | .PHONY: docker-up-granian
|
66 |
| -docker-up-granian: ## Run project with compose and granian |
| 99 | +docker-up-granian: ## Run project with compose and the Granian web server |
67 | 100 | docker compose -f granian-compose.yml up --remove-orphans
|
68 | 101 |
|
69 | 102 | .PHONY: docker-up-valkey
|
70 |
| -docker-up-valkey: ## Run project with compose and valkey |
| 103 | +docker-up-valkey: ## Run project with compose and Valkey |
71 | 104 | docker compose -f valkey-compose.yml up --remove-orphans
|
0 commit comments