add goreleaser

Add a goreleaser configuration file that builds binaries for Linux,
MacOS and Windows, for 32bit (x86/386) and 64bit (x64/amd64). The
binaries will be archived into a tar.gz/zip file along with the LICENSE
file.

The `dist/` directory will be written to by goreleaser with the binaries
during the build process, so it's also been added to .gitignore.

Goreleaser can be installed with:
go get github.com/goreleaser/goreleaser

Or other methods for install can be found at:
https://goreleaser.com

To build all the binaries and release them to GitHub:
1. Tag the release. e.g. `git tag -a v1.0.0 -m 'First release'`
2. Generate a GitHub Personal Access Token. See https://github.com/settings/tokens.
3. Push the release to GitHub. e.g. `git push origin v1.0.0`
4. Run goreleaser. e.g.  `GITHUB_TOKEN=xxxxxxx... goreleaser`

Go releaser will build the binaries, and upload the binaries to the
GitHub project's release page for the release that was tagged.
This commit is contained in:
Leigh McCulloch 2018-09-15 23:33:31 +00:00
parent d4d048fade
commit c051f741b0
3 changed files with 31 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
dist/

View File

@ -0,0 +1,22 @@
builds:
- binary: grpcurl
goos:
- linux
- darwin
- windows
goarch:
- amd64
- 386
archive:
wrap_in_directory: true
format: tar.gz
format_overrides:
- goos: windows
format: zip
replacements:
amd64: x64
386: x86
darwin: macos
files:
- LICENSE

View File

@ -30,6 +30,8 @@ import (
"github.com/fullstorydev/grpcurl"
)
var version = "<not set>"
var (
exit = os.Exit
@ -37,6 +39,8 @@ var (
help = flag.Bool("help", false,
`Print usage instructions and exit.`)
printVersion = flag.Bool("version", false,
`Print version.`)
plaintext = flag.Bool("plaintext", false,
`Use plain-text HTTP/2 when connecting to server (no TLS).`)
insecure = flag.Bool("insecure", false,
@ -146,6 +150,10 @@ func main() {
usage()
os.Exit(0)
}
if *printVersion {
fmt.Fprintf(os.Stderr, "%s v%s\n", os.Args[0], version)
os.Exit(0)
}
// Do extra validation on arguments and figure out what user asked us to do.
if *plaintext && *insecure {