Awesome
gex
The implementation of clarify best practice for tool dependencies.
See https://github.com/golang/go/issues/25922#issuecomment-412992431
Features
- Manage versions of tools dependencies, and build them with specified version
- Does not introduce new mechanisms to manage tool dependencies
- Only 2 commands that you use:
--add
and--build
- All you need to execute
go generate ./tools.go
if you want only to use tools
Usage
gex --add [packages...]
Add a new tool to dependencies:
$ gex --add github.com/golang/mock/mockgen
The tool will be managed in tools.go
and its version will be managed by Modules or dep.
$ cat tools.go
// Code generated by github.com/izumin5210/gex. DO NOT EDIT.
// +build tools
package tools
// tool dependencies
import (
_ "github.com/golang/mock/mockgen"
)
// If you want to use tools, please run the following command:
// go generate ./tools.go
//
//go:generate go build -v -o=./bin/reviewdog github.com/golang/mock/mockgen
$ cat go.mod | grep mock
github.com/golang/mock v1.1.1 // indirect
go generate ./tools.go
Build executable binaries into $PWD/bin
.
$ go generate ./tools.go
gex [command] [args...]
Execute command that managed in tools.go
and go.mod
.
gex
will build the executable binary automatically if needed.
$ gex mockgen
# prints mockgen's help text...
Installation
macOS
$ brew install izumin5210/tools/gex
Other platforms
You can download prebuilt binaries for each platform in the releases page.
Build from source
$ go get github.com/izumin5210/gex/cmd/gex