@@ -144,6 +144,13 @@ venv.tools.always-reinstall:
144144 ./$(VENV_TOOLS_BIN ) /pip install ./scripts
145145 cd ..
146146
147+ gha.lint : actionlint zizmor
148+
149+ actionlint : install.actionlint
150+ $(ACTIONLINT )
151+
152+ zizmor : install.zizmor
153+ $(ZIZMOR ) .
147154
148155# ## Developer Tooling Installation
149156# gosec
@@ -163,12 +170,43 @@ GOLANGCI_LINT = $(shell pwd)/out/golangci-lint
163170GOLANGCI_LINT_VERSION ?= v2.2.1
164171install.golangci-lint : $(GOLANGCI_LINT )
165172$(GOLANGCI_LINT ) :
166- $(call go-install-tool,$(GOLANGCI_LINT ) ,github.com/golangci/golangci-lint/v2/cmd/golangci-lint@$(GOLANGCI_LINT_VERSION ) ) \
173+ $(call go-install-tool,$(GOLANGCI_LINT ) ,github.com/golangci/golangci-lint/v2/cmd/golangci-lint@$(GOLANGCI_LINT_VERSION ) )
174+
175+ # actionlint
176+ ACTIONLINT = $(shell pwd) /out/actionlint
177+ ACTIONLINT_VERSION ?= v1.7.0
178+ install.actionlint : $(ACTIONLINT )
179+ $(ACTIONLINT ) :
180+ $(call go-install-tool,$(ACTIONLINT ) ,github.com/rhysd/actionlint/cmd/actionlint@$(ACTIONLINT_VERSION ) )
181+
182+ # zizmor
183+ ZIZMOR = $(shell pwd) /out/zizmor
184+ ZIZMOR_VERSION ?= v1.17.0
185+ ZIZMOR_ARCH = $(shell uname -m | sed 's/amd64/x86_64/g; s/arm64/aarch64/g')
186+ ZIZMOR_OS = $(shell uname -s | sed 's/Linux/unknown-linux-gnu/g; s/Darwin/apple-darwin/g')
187+ ZIZMOR_PLATFORM ?= $(ZIZMOR_ARCH ) -$(ZIZMOR_OS )
188+ install.zizmor : $(ZIZMOR )
189+ $(ZIZMOR ) :
190+ $(call github-release-install-tool,$(shell pwd) /out/zizmor.tar.gz,zizmorcore/zizmor,$(ZIZMOR_VERSION ) ,zizmor-$(ZIZMOR_PLATFORM ) .tar.gz)
191+ tar -xzf $(shell pwd) /out/zizmor.tar.gz -C $(shell pwd) /out ./zizmor
192+ rm $(shell pwd) /out/zizmor.tar.gz
167193
168194# go-install-tool will 'go install' any package $2 and install it to $1.
169195PROJECT_DIR := $(shell dirname $(abspath $(lastword $(MAKEFILE_LIST ) ) ) )
170196define go-install-tool
171197@[ -f $(1 ) ] || { \
172198GOBIN=$(PROJECT_DIR ) /out go install $(2 ) ;\
173199}
200+ endef
201+
202+ # github-release-install-tool
203+ # Arguments:
204+ # $1 - destination path
205+ # $2 - GitHub repository
206+ # $3 - release version
207+ # $4 - artifact name
208+ define github-release-install-tool
209+ @[ -f $(1 ) ] || { \
210+ curl -L https://github.com/$(2 ) /releases/download/$(3 ) /$(4 ) -o $(1 ) ;\
211+ }
174212endef
0 commit comments