-
Notifications
You must be signed in to change notification settings - Fork 62
Expand file tree
/
Copy pathMakefile-deps.mk
More file actions
126 lines (108 loc) · 6.04 KB
/
Makefile-deps.mk
File metadata and controls
126 lines (108 loc) · 6.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
PROJECT_DIR := $(shell dirname $(abspath $(lastword $(MAKEFILE_LIST))))
BIN_DIR ?= $(PROJECT_DIR)/bin
TOOLS_DIR := $(PROJECT_DIR)/hack/internal/tools
ifeq (,$(shell go env GOBIN))
GOBIN=$(shell go env GOPATH)/bin
else
GOBIN=$(shell go env GOBIN)
endif
GO_CMD ?= go
# Use go.mod go version as source
GOLANGCI_LINT_VERSION ?= $(shell cd $(TOOLS_DIR) && GO111MODULE=on $(GO_CMD) list -m -f '{{.Version}}' github.com/golangci/golangci-lint)
CONTROLLER_GEN_VERSION ?= $(shell cd $(TOOLS_DIR) && GO111MODULE=on $(GO_CMD) list -m -f '{{.Version}}' sigs.k8s.io/controller-tools)
KUSTOMIZE_VERSION ?= $(shell cd $(TOOLS_DIR) && GO111MODULE=on $(GO_CMD) list -m -f '{{.Version}}' sigs.k8s.io/kustomize/kustomize/v4)
ENVTEST_VERSION ?= $(shell cd $(TOOLS_DIR) && GO111MODULE=on $(GO_CMD) list -m -f '{{.Version}}' sigs.k8s.io/controller-runtime/tools/setup-envtest)
KIND_VERSION ?= $(shell cd $(TOOLS_DIR) && GO111MODULE=on $(GO_CMD) list -m -f '{{.Version}}' sigs.k8s.io/kind)
YQ_VERSION ?= $(shell cd $(TOOLS_DIR) && GO111MODULE=on $(GO_CMD) list -m -f '{{.Version}}' github.com/mikefarah/yq/v4)
HELM_VERSION ?= $(shell cd $(TOOLS_DIR) && GO111MODULE=on $(GO_CMD) list -m -f '{{.Version}}' helm.sh/helm/v3)
HELM_DOCS_VERSION ?= $(shell cd $(TOOLS_DIR) && GO111MODULE=on $(GO_CMD) list -m -f '{{.Version}}' github.com/norwoodj/helm-docs)
HUGO_VERSION ?= $(shell cd $(TOOLS_DIR) && GO111MODULE=on $(GO_CMD) list -m -f '{{.Version}}' github.com/gohugoio/hugo)
MDTOC_VERSION ?= $(shell cd $(TOOLS_DIR) && GO111MODULE=on $(GO_CMD) list -m -f '{{.Version}}' sigs.k8s.io/mdtoc)
GENREF_VERSION ?= v0.28.0
##@ 📦 Tools
.PHONY: fix-tools-gomod
fix-tools-gomod: ## 🔧 Fix go.mod file in tools directory
@echo "🔧 Fixing tools go.mod file..."
@if [ -f "$(TOOLS_DIR)/go.mod" ]; then \
sed -i.bak -e 's/^go 1.23.0/go 1.23/' -e '/^toolchain/d' $(TOOLS_DIR)/go.mod && \
rm -f $(TOOLS_DIR)/go.mod.bak; \
fi
@echo "✅ go.mod fixed"
GOLANGCI_LINT = $(PROJECT_DIR)/bin/golangci-lint
.PHONY: golangci-lint
golangci-lint: fix-tools-gomod ## 🔍 Download golangci-lint locally if necessary
@echo "🔍 Installing golangci-lint..."
cd $(TOOLS_DIR) && GOBIN=$(PROJECT_DIR)/bin GO111MODULE=on $(GO_CMD) install github.com/golangci/golangci-lint/cmd/golangci-lint@$(GOLANGCI_LINT_VERSION)
@echo "✅ Installation complete"
STATICCHECK = $(PROJECT_DIR)/bin/staticcheck
.PHONY: staticcheck
staticcheck: fix-tools-gomod ## 🔎 Download staticcheck locally if necessary
@echo "🔎 Installing staticcheck..."
cd $(TOOLS_DIR) && GOBIN=$(PROJECT_DIR)/bin GO111MODULE=on $(GO_CMD) install honnef.co/go/tools/cmd/staticcheck@latest
@echo "✅ Installation complete"
CONTROLLER_GEN = $(PROJECT_DIR)/bin/controller-gen
.PHONY: controller-gen
controller-gen: fix-tools-gomod ## 🎮 Download controller-gen locally if necessary
@echo "🎮 Installing controller-gen..."
cd $(TOOLS_DIR) && GOBIN=$(PROJECT_DIR)/bin GO111MODULE=on $(GO_CMD) install sigs.k8s.io/controller-tools/cmd/controller-gen@$(CONTROLLER_GEN_VERSION)
@echo "✅ Installation complete"
KUSTOMIZE = $(PROJECT_DIR)/bin/kustomize
.PHONY: kustomize
kustomize: fix-tools-gomod ## 🔧 Download kustomize locally if necessary
@echo "🔧 Installing kustomize..."
cd $(TOOLS_DIR) && GOBIN=$(PROJECT_DIR)/bin GO111MODULE=on $(GO_CMD) install sigs.k8s.io/kustomize/kustomize/v4@$(KUSTOMIZE_VERSION)
@echo "✅ Installation complete"
ENVTEST = $(PROJECT_DIR)/bin/setup-envtest
.PHONY: envtest
envtest: fix-tools-gomod ## 🧪 Download envtest-setup locally if necessary
@echo "🧪 Installing envtest..."
cd $(TOOLS_DIR) && GOBIN=$(PROJECT_DIR)/bin GO111MODULE=on $(GO_CMD) install sigs.k8s.io/controller-runtime/tools/setup-envtest@$(ENVTEST_VERSION)
@echo "✅ Installation complete"
KIND = $(PROJECT_DIR)/bin/kind
.PHONY: kind
kind: fix-tools-gomod ## 🐳 Download kind locally if necessary
@echo "🐳 Installing kind..."
cd $(TOOLS_DIR) && GOBIN=$(PROJECT_DIR)/bin GO111MODULE=on $(GO_CMD) install sigs.k8s.io/kind@$(KIND_VERSION)
@echo "✅ Installation complete"
YQ = $(PROJECT_DIR)/bin/yq
.PHONY: yq
yq: fix-tools-gomod ## 🔧 Download yq locally if necessary
@echo "🔧 Installing yq..."
cd $(TOOLS_DIR) && GOBIN=$(PROJECT_DIR)/bin GO111MODULE=on $(GO_CMD) install github.com/mikefarah/yq/v4@$(YQ_VERSION)
@echo "✅ Installation complete"
HELM = $(PROJECT_DIR)/bin/helm
.PHONY: helm
helm: fix-tools-gomod ## ⎈ Download helm locally if necessary
@echo "⎈ Installing helm..."
cd $(TOOLS_DIR) && GOBIN=$(PROJECT_DIR)/bin GO111MODULE=on $(GO_CMD) install helm.sh/helm/v3/cmd/helm@$(HELM_VERSION)
@echo "✅ Installation complete"
HELM_DOCS = $(PROJECT_DIR)/bin/helm-docs
.PHONY: helm-docs
helm-docs: fix-tools-gomod ## 📚 Download helm-docs locally if necessary
@echo "📚 Installing helm-docs..."
cd $(TOOLS_DIR) && GOBIN=$(PROJECT_DIR)/bin GO111MODULE=on $(GO_CMD) install github.com/norwoodj/helm-docs/cmd/helm-docs@$(HELM_DOCS_VERSION)
@echo "✅ Installation complete"
HUGO = $(PROJECT_DIR)/bin/hugo
.PHONY: hugo
hugo: fix-tools-gomod ## 📝 Download hugo locally if necessary
@echo "📝 Installing hugo..."
cd $(TOOLS_DIR) && GOBIN=$(PROJECT_DIR)/bin CGO_ENABLED=1 $(GO_CMD) install -tags extended github.com/gohugoio/hugo@$(HUGO_VERSION)
@echo "✅ Installation complete"
MDTOC = $(PROJECT_DIR)/bin/mdtoc
.PHONY: mdtoc
mdtoc: fix-tools-gomod ## 📑 Download mdtoc locally if necessary
@echo "📑 Installing mdtoc..."
cd $(TOOLS_DIR) && GOBIN=$(PROJECT_DIR)/bin CGO_ENABLED=1 $(GO_CMD) install sigs.k8s.io/mdtoc@$(MDTOC_VERSION)
@echo "✅ Installation complete"
GOIMPORTS = $(PROJECT_DIR)/bin/goimports
.PHONY: install-goimports
install-goimports: fix-tools-gomod ## 📦 Install goimports if not present
@echo "📦 Installing goimports..."
cd $(TOOLS_DIR) && GOBIN=$(PROJECT_DIR)/bin GO111MODULE=on $(GO_CMD) install golang.org/x/tools/cmd/goimports@latest
@echo "✅ Installation complete"
GENREF = $(PROJECT_DIR)/bin/genref
.PHONY: genref
genref: ## 📚 Download genref locally if necessary
@echo "📚 Installing genref..."
@GOBIN=$(PROJECT_DIR)/bin $(GO_CMD) install github.com/kubernetes-sigs/reference-docs/genref@$(GENREF_VERSION)
@echo "✅ Installation complete"