Add tools command for direct binary downloads from GitHub releases

Introduces a new 'tools' command that installs development tools (golangci-lint, gotestsum)
by downloading pre-built binaries directly from GitHub releases instead of using 'go get -tool'.
This prevents modifications to plugin go.mod files and improves build reliability.

Features:
- Cross-platform support (Windows, macOS, Linux) with automatic architecture detection
- Version-specific binary naming with symlinks for easy access
- Configurable installation directory via --bin-dir flag
- Tar.gz archive extraction with binary validation
- Updated Makefile integration to use downloaded binaries

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Felipe M 2025-08-04 13:41:54 +02:00
parent f8e3266029
commit c1399f5107
No known key found for this signature in database
GPG key ID: 52E5D65FCF99808A
9 changed files with 596 additions and 102 deletions

View file

@ -2,11 +2,13 @@
# Testing and Quality Assurance
# ====================================================================================
GOLANGCI_LINT_BINARY = ./build/bin/golangci-lint
GOTESTSUM_BINARY = ./build/bin/gotestsum
## Install go tools
install-go-tools:
@echo Installing go tools
$(GO) install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.64.8
$(GO) install gotest.tools/gotestsum@v1.7.0
@echo "Installing development tools..."
@pluginctl tools install --bin-dir ./build/bin
## Runs eslint and golangci-lint
.PHONY: check-style
@ -24,14 +26,14 @@ endif
ifneq ($(HAS_SERVER),)
@echo Running golangci-lint
$(GO) vet ./...
$(GOBIN)/golangci-lint run ./...
$(GOLANGCI_LINT_BINARY) run ./...
endif
## Runs any lints and unit tests defined for the server and webapp, if they exist.
.PHONY: test
test: apply webapp/node_modules install-go-tools
ifneq ($(HAS_SERVER),)
$(GOBIN)/gotestsum -- -v ./...
$(GOTESTSUM_BINARY) -- -v ./...
endif
ifneq ($(HAS_WEBAPP),)
cd webapp && $(NPM) run test;
@ -42,7 +44,7 @@ endif
.PHONY: test-ci
test-ci: apply webapp/node_modules install-go-tools
ifneq ($(HAS_SERVER),)
$(GOBIN)/gotestsum --format standard-verbose --junitfile report.xml -- ./...
$(GOTESTSUM_BINARY) --format standard-verbose --junitfile report.xml -- ./...
endif
ifneq ($(HAS_WEBAPP),)
cd webapp && $(NPM) run test;