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