@@ -37,8 +37,8 @@ vet: ## Run go vet against code.
37
37
go vet ./...
38
38
39
39
.PHONY : lint
40
- lint : golangci-lint # # Run golangci-lint on the code.
41
- $(GOLANGCILINT ) run ./...
40
+ lint : golangci-lint # # Run golangci-lint linter
41
+ $(GOLANGCI_LINT ) run
42
42
43
43
.PHONY : check-license
44
44
check-license : addlicense # # Check that every file has a license header present.
@@ -69,30 +69,46 @@ $(LOCALBIN):
69
69
ADDLICENSE ?= $(LOCALBIN ) /addlicense
70
70
GOIMPORTS ?= $(LOCALBIN ) /goimports
71
71
MOCKGEN ?= $(LOCALBIN ) /mockgen
72
- GOLANGCILINT ?= $(LOCALBIN ) /golangci-lint
72
+ GOLANGCI_LINT ?= $(LOCALBIN ) /golangci-lint
73
73
74
74
# # Tool Versions
75
75
ADDLICENSE_VERSION ?= v1.1.1
76
- GOIMPORTS_VERSION ?= v0.31 .0
76
+ GOIMPORTS_VERSION ?= v0.34 .0
77
77
MOCKGEN_VERSION ?= v0.5.2
78
- GOLANGCILINT_VERSION ?= v2.1
78
+ GOLANGCI_LINT_VERSION ?= v2.1
79
79
80
80
.PHONY : addlicense
81
81
addlicense : $(ADDLICENSE ) # # Download addlicense locally if necessary.
82
82
$(ADDLICENSE ) : $(LOCALBIN )
83
- test -s $( LOCALBIN ) /addlicense || GOBIN= $( LOCALBIN ) go install github.com/google/addlicense@ $(ADDLICENSE_VERSION )
83
+ $( call go-install-tool, $( ADDLICENSE ) , github.com/google/addlicense, $(ADDLICENSE_VERSION ) )
84
84
85
85
.PHONY : goimports
86
86
goimports : $(GOIMPORTS ) # # Download goimports locally if necessary.
87
87
$(GOIMPORTS ) : $(LOCALBIN )
88
- test -s $( LOCALBIN ) /goimports || GOBIN= $( LOCALBIN ) go install golang.org/x/tools/cmd/goimports@ $(GOIMPORTS_VERSION )
88
+ $( call go-install-tool, $( GOIMPORTS ) , golang.org/x/tools/cmd/goimports, $(GOIMPORTS_VERSION ) )
89
89
90
90
.PHONY : mockgen
91
91
mockgen : $(MOCKGEN ) # # Download mockgen locally if necessary.
92
92
$(MOCKGEN ) : $(LOCALBIN )
93
- test -s $(LOCALBIN ) /mockgen || GOBIN=$(LOCALBIN ) go install go.uber.org/mock/mockgen@$(MOCKGEN_VERSION )
94
-
95
- .PHONY : goimports
96
- golangci-lint : $(GOLANGCILINT ) # # Download golangci-lint locally if necessary.
97
- $(GOLANGCILINT ) : $(LOCALBIN )
98
- test -s $(LOCALBIN ) /golangci-lint || GOBIN=$(LOCALBIN ) go install github.com/golangci/golangci-lint/v2/cmd/golangci-lint@$(GOLANGCILINT_VERSION )
93
+ $(call go-install-tool,$(MOCKGEN ) ,go.uber.org/mock/mockgen,$(MOCKGEN_VERSION ) )
94
+
95
+ .PHONY : golangci-lint
96
+ golangci-lint : $(GOLANGCI_LINT ) # # Download golangci-lint locally if necessary.
97
+ $(GOLANGCI_LINT ) : $(LOCALBIN )
98
+ $(call go-install-tool,$(GOLANGCI_LINT ) ,github.com/golangci/golangci-lint/v2/cmd/golangci-lint,${GOLANGCI_LINT_VERSION})
99
+
100
+ # go-install-tool will 'go install' any package with custom target and name of binary, if it doesn't exist
101
+ # $1 - target path with name of binary
102
+ # $2 - package url which can be installed
103
+ # $3 - specific version of package
104
+ define go-install-tool
105
+ @[ -f "$(1 ) -$(3 ) " ] || { \
106
+ set -e; \
107
+ package=$(2 ) @$(3 ) ;\
108
+ echo "Downloading $${package}" ;\
109
+ rm -f $(1 ) || true ;\
110
+ GOBIN=$(LOCALBIN ) go install $${package} ;\
111
+ mv $(1 ) $(1 ) -$(3 ) ;\
112
+ } ;\
113
+ ln -sf $(1 ) -$(3 ) $(1 )
114
+ endef
0 commit comments