Continuing the recent theme of blog posts about Go tooling, this post will briefly
discuss how analysis tools interact with one of Go's newest features - generics.
As usual, this post provides a motivating example and discusses a couple of
approaches to writing a tool. The full c...
Most people run GoReleaser by creating a tag locally, pushing it, and letting
their CI takes care of the matter.
Another lesser known option is to leverage workflow_dispatch on a GitHub
Action to create the tag locally, and then “auto-creating” the tag once the
releas...
A common question that comes up when writing AST-based tooling in Go is "how do
I find a node's parent?", or more generally, "what are all the ancestors of
a given node?"
Go's AST package does not come with parent links
out of the box; this is a common choice...
One thing I really like about building libraries in Go is that you can create testable examples as a first-class citizen of the testing framework. This allows writing example code in the repository in a way that can make sure that expected use cases are always valid and do not br...
This release took a while, for all the good reasons: a ton of new features and
bug fixes for your delight!
Oh, and, over 100 commits!
It might be the biggest GoReleaser release in commits made, although I have no
data to back it up — except my memory.
GoReleaser s...
GoReleaser Pro v1.11+ added support to keeping a nightly release.
That means that, whenever you want, you can run:
goreleaser releaser --clean --nightly
And it’ll delete previous nightly releases and create a new one with the
current commit artifacts.
To enable it, you&rsqu...
Everyone likes command line completions, so much that some even install extra
tools just to have them.
But you don’t need to install anything just for completions: Bash, Fish and ZSH
all support it out of the box!
In this post I’ll show you how to ship completions for...