Automatically generate binstubs using tools.go
Binstubs is a nearly zero-configuration way to generate binstubs to execute
the version of a go command tracked in go.mod
.
So instead of running go run tool@version
which is verbose and causes
difficulty when upgrading versions, or go run tool
, which might use the
wrong version of a tool, you just run bin/tool
.
-
Create a
tools.go
in the root of your project that looks like this, pointing to the executable program path for each dependency:package main import ( _ "github.com/brasic/binstubs" _ "github.com/path/to/dep/cmd/something" _ "github.com/golang-migrate/migrate/v4/cmd/migrate" )
-
Run
go run github.com/brasic/binstubs
to create corresponding shell scripts inbin/
. You can also add ago:generate
comment to the top of tools.go instead. -
If you need to import a tool that you don't want a binstub for, add an inline
binstub:ignore
comment after the import. -
If you need extra flags passed to
go run
, add an inlinebinstub:args="ARGS"
comment after the import.