Skip to content

Commit a83112e

Browse files
committed
Makefile for live api example
1 parent 537faea commit a83112e

1 file changed

Lines changed: 40 additions & 0 deletions

File tree

Makefile

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -249,3 +249,43 @@ doc-prev: ## Generate live preview of docs and open in browser.
249249
mdbook clean docs/
250250
mdbook build docs/
251251
mdbook serve docs/ --open
252+
253+
254+
SWAGGER_IMG := swaggerapi/swagger-ui
255+
SWAGGER_NAME := swagger-ui-preview
256+
OPENAPI_FILE := openapi.json
257+
258+
.PHONY: api-prev
259+
api-prev: ## Generate live preview of OpenAPI Swagger Docs and open in browser (port 8080).
260+
@set -e; \
261+
echo "Generating OpenAPI spec..."; \
262+
cargo run --example generate_openapi_spec > $(OPENAPI_FILE); \
263+
echo "Starting Swagger UI..."; \
264+
cid="$$(docker ps -q -f name=^/$(SWAGGER_NAME)$$)"; \
265+
if [ -n "$$cid" ]; then \
266+
echo "Restarting existing container $$cid"; \
267+
docker restart "$$cid" >/dev/null; \
268+
else \
269+
old="$$(docker ps -aq -f name=^/$(SWAGGER_NAME)$$)"; \
270+
if [ -n "$$old" ]; then \
271+
echo "Removing stale container $$old"; \
272+
docker rm -f "$$old" >/dev/null || true; \
273+
fi; \
274+
cid="$$(docker run -d --rm \
275+
--name $(SWAGGER_NAME) \
276+
-p 8080:8080 \
277+
-e SWAGGER_JSON=/openapi.json \
278+
-v $$(pwd)/$(OPENAPI_FILE):/openapi.json:ro \
279+
$(SWAGGER_IMG))"; \
280+
echo "Started container $$cid"; \
281+
fi; \
282+
if command -v open >/dev/null 2>&1; then \
283+
open http://localhost:8080; \
284+
elif command -v xdg-open >/dev/null 2>&1; then \
285+
xdg-open http://localhost:8080; \
286+
else \
287+
echo "Open http://localhost:8080 manually"; \
288+
fi; \
289+
trap 'echo ""; echo "Stopping Swagger UI..."; docker stop "$$cid" >/dev/null || true' INT TERM EXIT; \
290+
echo "Swagger UI running (Ctrl-C to stop)"; \
291+
wait

0 commit comments

Comments
 (0)