Skip to content
/ gex Public

The implementation of "clarify best practice for tool dependencies".

License

Notifications You must be signed in to change notification settings

izumin5210/gex

Repository files navigation

gex

CI GoDoc GitHub release (latest SemVer) Go Report Card License

The implementation of clarify best practice for tool dependencies.

See golang/go#25922 (comment)

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

Requirements

gex depends on dep or Modules to manage tool dependencies,