1+ OPENAPI := openapi.json
2+
13.PHONY : help
24help :
35 @echo " qontract-api Makefile"
46 @echo " "
57 @echo " Development:"
6- @echo " make run-api Run FastAPI server locally"
7- @echo " make run-worker Run Celery worker locally"
8- @echo " make generate-token SUBJECT=<subject> DAYS=<days>"
9- @echo " Generate JWT token (default: DAYS=30)"
10- @echo " "
11- @echo " Docker:"
12- @echo " make docker-up Start all services"
13- @echo " make docker-down Stop all services"
14- @echo " make docker-build Rebuild images"
15- @echo " make docker-logs View logs"
8+ @echo " make run-api Run FastAPI server locally"
9+ @echo " make run-worker Run Celery worker locally"
10+ @echo " make generate-token SUBJECT=<subject> EXPIRES_DAYS=<days> Generate JWT token"
11+ @echo " make generate-openapi-spec Generate OpenAPI spec file"
1612 @echo " "
1713 @echo " Quality:"
18- @echo " make test Run all checks (pytest, mypy, ruff)"
19- @echo " make format Format and fix code with ruff"
14+ @echo " make test Run all checks (pytest, mypy, ruff)"
15+ @echo " make format Format and fix code with ruff"
2016
2117.PHONY : run-api
2218run-api :
@@ -30,29 +26,32 @@ run-worker:
3026generate-token :
3127 @if [ -z " $( SUBJECT) " ]; then \
3228 echo " Error: SUBJECT is required" ; \
33- echo " Usage: make generate-token SUBJECT=admin DAYS=30 " ; \
29+ echo " Usage: make generate-token SUBJECT=admin EXPIRES_DAYS=365 " ; \
3430 exit 1; \
3531 fi
36- @uv run python -m qontract_api.scripts.generate_token --subject " $( SUBJECT) " --expires-days $(or $(DAYS ) ,30)
37-
38- .PHONY : docker-up
39- docker-up :
40- cd .. && docker compose up
41-
42- .PHONY : docker-down
43- docker-down :
44- cd .. && docker compose down
45-
46- .PHONY : docker-build
47- docker-build :
48- cd .. && docker compose build
32+ @if [ -z " $( EXPIRES_DAYS) " ]; then \
33+ echo " Error: SUBJECT is required" ; \
34+ echo " Usage: make generate-token SUBJECT=admin EXPIRES_DAYS=365" ; \
35+ exit 1; \
36+ fi
37+ @uv run python -m qontract_api.scripts.generate_token --subject " $( SUBJECT) " --expires-days " $( EXPIRES_DAYS) "
4938
50- .PHONY : docker-logs
51- docker-logs :
52- cd .. && docker compose logs -f
39+ .PHONY : generate-openapi-spec
40+ generate-openapi-spec :
41+ @uv run python -m qontract_api.scripts.generate_openapi_spec > $( OPENAPI )
5342
5443.PHONY : test
5544test :
45+ @TEMP_DIR=$$(mktemp -d ) ; \
46+ trap " rm -rf $$ TEMP_DIR" EXIT; \
47+ $(MAKE ) generate-openapi-spec OPENAPI=$$ TEMP_DIR/openapi.json; \
48+ if ! diff -q $( OPENAPI) $$ TEMP_DIR/openapi.json > /dev/null 2>&1 ; then \
49+ echo " ✗ openapi.json differs from generated version" ; \
50+ echo " " ; \
51+ echo " Run 'make generate-openapi-spec' to update." ; \
52+ echo " " ; \
53+ exit 1; \
54+ fi
5655 uv run ruff check .
5756 uv run ruff format --check .
5857 uv run mypy .
0 commit comments