Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary Of Changes
Additional Context
New in Go 1.24: https://tip.golang.org/doc/go1.24#tools
https://tip.golang.org/doc/modules/managing-dependencies#tools
Important context: I decided to keep the internal
tools
module becausego get -tool
adds all the tool's dependencies into your project. That means, we will end up with a much largergo.mod
with manyrequire
directives for the tool's dependencies. Whilst this in itself is not a problem (that's whatgo.mod
is for), it has the potential to trigger false positives on security scanning tools.For example,
promtool
pulls a version ofgithub.com/golang-jwt/jwt
that has a known vulnerability. In this case, I realised it was not a vulnerability on our project, but on the tool dependency. For this reason, I decided to keep the internal tools pattern: to minimise false positives from security scannersThere's still some merit to having the
tool
directive ingo.mod
, because it pulls more dependencies, which means is more accurately tracking what our project depends on (even if we don't link to it).Local Testing
Run
go install tool
andcd internal/tools; go install tool
. All tools build successfully and are installed to GOBIN.