Gobu
A traitful go build wrapper.
Installation
$ go get github.com/kopoli/gobu
Description
There are some hard-to-remember options to the build and link tools. With
gobu one can list the wanted traits as simple words in the command line and
the appropriate commands will be generated.
Supported traits
The following traits are supported:
-
debug: Set -x build flag.
-
install: Run go install instead of go build.
-
linux: Set GOOS=linux environment variable.
-
nocgo: Set CGO_ENABLED=0 environment variable.
-
package: After building creates a zip-package of the binary, README* and
LICENSE files. Extra files can be added with the GOBU_EXTRA_DIST
environment variable.
-
race: Set -race build flag.
-
trimpath: Set -trimpath build flag.
-
rebuild: Set -a build flag.
-
shrink: Set -s -w link flags.
-
static: Set -extldflags "-static" link flags.
-
verbose: Set -v build flag.
-
version: Set the following go variables to the main package:
main.timestamp: Value of time.Now().Format(time.RFC3339).
main.version: Output of git describe --always --tags --dirty.
main.buildGOOS: Value of runtime.GOOS.
main.buildGOARCH: Value of runtime.GOARCH.
-
windows: Set GOOS=windows environment variable.
-
windowsgui: Set windows trait and -H windowsgui link flag.
The following composite traits are supported:
- default: Sets the version trait. This is used if
gobu is run
without arguments.
- release: Sets the traits: shrink, version, static,
rebuild and trimpath.
The following parameterized traits are supported:
- buildflags=: Set 'go build' flags explicitly.
- gcflags=: Set 'go tool compile' flags explicitly.
- go=: Set 'go' binary explicitly.
- ldflags=: Set 'go tool link' flags explicitly.
If there are conflicting options (e.g. linux and windows) then the
latter will be in effect.
Example
$ gobu shrink static nocgo
This will add the -s -w -extldflags "-static" flags to the linker, and set
the CGO_ENABLED=0 environment variable.
The parameterized traits can be used like the following:
$ gobu version ldflags='-s'
This will add ONLY the -s flag to the linker. The flags added with the
version trait are ignored. Set the ldflags= trait before version to have
flags from both traits.
The binary packages of gobu are generated with the following commands:
$ gobu linux nocgo release package
$ gobu windows nocgo release package
License
MIT license