Hi All,
I’ve been working on a new tool to help with some of the challenges we’ve had working with repositories that contain multiple packages. It has turned into a useful tool that has replaced my use of the go
command for many things.
Benefits
- Faster builds (by defaulting to go install except for main packages, and by running concurrent go install commands when the dependency tree allows)
- Faster testing (by caching test results and not retesting except when necessary)
- Faster linting (by caching lint results from gometalinter)
- Did I mention fast!
- Automatically runs go generate if its dependency calculation determines it’s required
- Operates on all packages in a repository (by default) with intelligent support for vendored packages
- Can complement other build tools like
make
- Does not interfere with tools like
govendor
orgb
- Built in shell auto-completion
Commands
build build all of the packages in each of the projects
clean remove executables in repo produced by build
commands list all of the executables that will be emitted by the build command
install compile and install all of the packages in each of the projects
lint gometalinter with cache and better defaults
list lists the packages in the repos of the packages named by the import paths, one per line.
test test all of the packages in each of the projects and cache the results
Please take a look at the README for full details.
This is still a pre 1.0 product. There are a few outstanding issues to resolve, but I’d also love to get some community feedback as well.
Thanks a bunch!