github.com/banzaicloud/operator-tools@v0.28.10/Makefile (about) 1 LICENSEI_VERSION = 0.2.0 2 GOLANGCI_VERSION = 1.21.0 3 4 # Get the currently used golang install path (in GOPATH/bin, unless GOBIN is set) 5 ifeq (,$(shell go env GOBIN)) 6 GOBIN=$(shell go env GOPATH)/bin 7 else 8 GOBIN=$(shell go env GOBIN) 9 endif 10 11 BIN := ${PWD}/bin 12 export PATH := ${BIN}:${PATH} 13 14 CONTROLLER_GEN_VERSION = v0.8.0 15 CONTROLLER_GEN = $(PWD)/bin/controller-gen 16 17 OS = $(shell uname | tr A-Z a-z) 18 19 ENVTEST_BIN_DIR := ${BIN}/envtest 20 ENVTEST_K8S_VERSION := 1.24.1 21 ENVTEST_BINARY_ASSETS := ${ENVTEST_BIN_DIR}/bin 22 23 SETUP_ENVTEST := ${BIN}/setup-envtest 24 25 # Generate code 26 generate: bin/controller-gen 27 $(CONTROLLER_GEN) object:headerFile=./hack/boilerplate.go.txt paths=./pkg/secret/... 28 $(CONTROLLER_GEN) object:headerFile=./hack/boilerplate.go.txt paths=./pkg/volume/... 29 $(CONTROLLER_GEN) object:headerFile=./hack/boilerplate.go.txt paths=./pkg/prometheus/... 30 $(CONTROLLER_GEN) object:headerFile=./hack/boilerplate.go.txt paths=./pkg/types/... 31 $(CONTROLLER_GEN) object:headerFile=./hack/boilerplate.go.txt paths=./pkg/typeoverride/... 32 $(CONTROLLER_GEN) object:headerFile=./hack/boilerplate.go.txt paths=./pkg/helm/... 33 34 bin/controller-gen: 35 @ if ! test -x bin/controller-gen; then \ 36 set -ex ;\ 37 GOBIN=$(PWD)/bin go install sigs.k8s.io/controller-tools/cmd/controller-gen@${CONTROLLER_GEN_VERSION} ;\ 38 fi 39 40 41 bin/licensei: bin/licensei-${LICENSEI_VERSION} 42 @ln -sf licensei-${LICENSEI_VERSION} bin/licensei 43 bin/licensei-${LICENSEI_VERSION}: 44 @mkdir -p bin 45 curl -sfL https://git.io/licensei | bash -s v${LICENSEI_VERSION} 46 @mv bin/licensei $@ 47 48 .PHONY: license-cache 49 license-cache: bin/licensei ## Generate license cache 50 bin/licensei cache 51 52 .PHONY: license-check 53 license-check: bin/licensei ## Run license check 54 bin/licensei check 55 bin/licensei header 56 57 .PHONY: test 58 test: ${ENVTEST_BINARY_ASSETS} 59 KUBEBUILDER_ASSETS=${ENVTEST_BINARY_ASSETS} go test ./... 60 61 .PHONY: check 62 check: test lint check-diff ## Run tests and linters 63 64 bin/golangci-lint: bin/golangci-lint-${GOLANGCI_VERSION} 65 @ln -sf golangci-lint-${GOLANGCI_VERSION} bin/golangci-lint 66 bin/golangci-lint-${GOLANGCI_VERSION}: 67 @mkdir -p bin 68 curl -sfL curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | bash -s -- -b ./bin/ v${GOLANGCI_VERSION} 69 @mv bin/golangci-lint $@ 70 71 .PHONY: lint 72 lint: export CGO_ENABLED = 1 73 lint: bin/golangci-lint ## Run linter 74 bin/golangci-lint run 75 76 .PHONY: fix 77 fix: export CGO_ENABLED = 1 78 fix: bin/golangci-lint ## Fix lint violations 79 bin/golangci-lint run --fix 80 81 check-diff: generate-type-docs 82 go mod tidy 83 $(MAKE) generate docs 84 git diff --exit-code 85 86 generate-type-docs: 87 go run cmd/docs.go 88 89 ${ENVTEST_BINARY_ASSETS}: ${ENVTEST_BINARY_ASSETS}_${ENVTEST_K8S_VERSION} 90 ln -sf $(notdir $<) $@ 91 92 ${ENVTEST_BINARY_ASSETS}_${ENVTEST_K8S_VERSION}: | ${SETUP_ENVTEST} ${ENVTEST_BIN_DIR} 93 ln -sf $$(${SETUP_ENVTEST} --bin-dir ${ENVTEST_BIN_DIR} use ${ENVTEST_K8S_VERSION} -p path) $@ 94 95 ${SETUP_ENVTEST}: IMPORT_PATH := sigs.k8s.io/controller-runtime/tools/setup-envtest 96 ${SETUP_ENVTEST}: VERSION := latest 97 ${SETUP_ENVTEST}: | ${BIN} 98 GOBIN=${BIN} go install ${IMPORT_PATH}@${VERSION} 99 100 ${ENVTEST_BIN_DIR}: | ${BIN} 101 mkdir -p $@ 102 103 ${BIN}: 104 mkdir -p $@ 105 106 define go_install_binary 107 find ${BIN} -name '$(notdir ${IMPORT_PATH})_*' -exec rm {} + 108 GOBIN=${BIN} go install ${IMPORT_PATH}@${VERSION} 109 mv ${BIN}/$(notdir ${IMPORT_PATH}) ${BIN}/$(notdir ${IMPORT_PATH})_${VERSION} 110 endef