# API Module Makefile # This Makefile provides targets for the swagger generation and validation # which are specific to the API module. DOCKER ?= docker BUILDX ?= $(DOCKER) buildx API_DIR := $(CURDIR) PROJECT_PATH := /go/src/github.com/moby/moby DOCKER_MOUNT := -v "$(API_DIR):$(PROJECT_PATH)/api" DOCKER_IMAGE := docker-api-dev DOCKER_WORKDIR := -w $(PROJECT_PATH)/api DOCKER_FLAGS := $(DOCKER) run --rm $(DOCKER_MOUNT) $(DOCKER_WORKDIR) DOCKER_RUN := $(DOCKER_FLAGS) "$(DOCKER_IMAGE)" DOCKER_CONTAINER_NAME := $(if $(CONTAINER_NAME),--name $(CONTAINER_NAME),) DOCKER_BUILD_ARGS += --build-arg=GO_VERSION DOCKER_BUILD_ARGS += --build-arg=SWAGGER_VERSION BUILD_CMD := $(BUILDX) build SWAGGER_DOCS_PORT ?= 9000 .DEFAULT_GOAL := help .PHONY: build build: $(BUILD_CMD) $(DOCKER_BUILD_ARGS) \ --target dev \ --load \ -t "$(DOCKER_IMAGE)" \ -f Dockerfile \ . .PHONY: swagger-gen swagger-gen: build ## generate swagger API types $(DOCKER_RUN) ./scripts/generate-swagger-api.sh .PHONY: swagger-docs swagger-docs: ## preview the API documentation @echo "API docs preview will be running at http://localhost:$(SWAGGER_DOCS_PORT)" @docker run --rm \ -v ./:/usr/share/nginx/html/swagger/ \ -e 'REDOC_OPTIONS=hide-hostname="true" lazy-rendering' \ -e SPEC_URL="swagger/swagger.yaml" \ -p $(SWAGGER_DOCS_PORT):80 \ redocly/redoc:v2.5.1 .PHONY: validate-swagger validate-swagger: build ## validate the swagger.yaml file $(DOCKER_RUN) ./scripts/validate-swagger.sh .PHONY: validate-swagger-gen validate-swagger-gen: build ## validate generated types are up-to-date $(DOCKER_RUN) ./scripts/validate-swagger-gen.sh .PHONY: help help: ## display this help message @awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z0-9_-]+:.*?## / {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST)