github.com/olli-ai/jx/v2@v2.0.400-0.20210921045218-14731b4dd448/Makefile.codegen (about)

     1  CODE_GEN_BIN_NAME := codegen
     2  CODE_GEN_GO_DEPENDENCIES := $(call rwildcard,cmd/codegen/,*.go)
     3  CODE_GEN_BUILDFLAGS :=
     4  ifdef DEBUG
     5  CODE_GEN_BUILDFLAGS := -gcflags "all=-N -l" $(CODE_GEN_BUILDFLAGS)
     6  endif
     7  
     8  PEGOMOCK_VERSION := v2.7.0
     9  CLIENTSET_GENERATOR_VERSION := kubernetes-1.15.12
    10  GEN_APIDOCS_VERSION := v0.0.0-20190912061656-a61bc210ee54
    11  OPENAPI_GEN_VERSION := 36ebc4887cdc
    12  
    13  build-codegen: build/$(CODE_GEN_BIN_NAME) ## Build the code generator
    14  
    15  build/$(CODE_GEN_BIN_NAME): $(CODE_GEN_GO_DEPENDENCIES)
    16  	CGO_ENABLED=$(CGO_ENABLED) $(GO) build $(CODE_GEN_BUILDFLAGS) -o build/$(CODE_GEN_BIN_NAME) cmd/codegen/codegen.go
    17  
    18  test-codegen: ## Test the code geneator
    19  	CGO_ENABLED=$(CGO_ENABLED) $(GO) test -v -short ./cmd/codegen/...
    20  
    21  # Generate go code using generate directives in files and kubernetes code generation
    22  # Anything generated by this target should be checked in
    23  generate: build-codegen install-generate-deps generate-mocks generate-client ## Generate the Go code (crds, mocks, openapi, client)
    24  	@$(MAKE) fmt
    25  	@$(MAKE) importfmt
    26  	@echo "Generation complete"
    27  
    28  install-generate-deps:
    29  	$(GO) get github.com/petergtz/pegomock/...@$(PEGOMOCK_VERSION)
    30  
    31  generate-mocks: install-generate-deps go-generate fmt importfmt ## Generate the mocks
    32  
    33  go-generate:
    34  	@echo "Generating Mocks using pegomock"
    35  	$(GO) generate ./...
    36  
    37  generate-client: codegen-config fmt importfmt ## Generate the client
    38  
    39  codegen-config: build-codegen ## Generate the deepcopy for the config, jenkinsfile, and tekton/syntax packages
    40  	# sleep for one second to prevent collision with previous codegen's replacement of go.mod
    41  	sleep 1
    42  	./build/$(CODE_GEN_BIN_NAME) --generator-version $(CLIENTSET_GENERATOR_VERSION) clientset --generator deepcopy --output-package=pkg --input-package=v2/pkg --group-with-version=config: --group-with-version=jenkinsfile: --group-with-version=tekton:syntax --semver=v2
    43  
    44  # Generated docs are not checked in
    45  generate-docs: build-codegen ## Generate the docs
    46  	@echo "Generating HTML docs for Kubernetes Clients"
    47  	./build/$(CODE_GEN_BIN_NAME) --generator-version $(GEN_APIDOCS_VERSION) docs
    48  
    49  install-refdocs:
    50  	$(GO) get github.com/jenkins-x/gen-crd-api-reference-docs
    51  
    52  generate-refdocs: generate-config-refdocs
    53  
    54  generate-config-refdocs:
    55  	${GOPATH}/bin/gen-crd-api-reference-docs -config "docs/configdocs/config.json" \
    56  	-template-dir docs/configdocs/templates \
    57      -api-dir "./pkg/config" \
    58      -out-file docs/config.md
    59  
    60  stash:
    61  	# Making sure repo has no outstanding changes
    62  	git stash
    63  
    64  # Verifies that generated code is in sync with implementation
    65  verify-generation-complete: stash generate ## Verify the generated code is up to date
    66  	$(eval CHANGED = $(shell git ls-files --modified --others --exclude-standard))
    67  	@if [ "$(CHANGED)" == "" ]; \
    68        	then \
    69        	    echo "All generated files up to date"; \
    70        	else \
    71        		echo "Code generation is out of date"; \
    72        		echo "$(CHANGED)"; \
    73  			git diff; \
    74        		exit 1; \
    75        	fi