Skip to content

Releases: fullstorydev/grpcurl

v1.8.1

30 Apr 21:19
Compare
Choose a tag to compare

Changes

As of this release, binaries are published (to GitHub) for Linux for the ARM64 platform (linux_arm64).

Command-line tool

  • Support for XDS v3 has been added. This is available when using XDS as the URL scheme for the target, such as xds:///example.com.
  • Support has been added for the optional keyword in proto3 source files (when using -proto arguments). This is a feature that was released in Protocol Buffers v3.15.0 (released as an experimental feature in v3.12.0). You can read more about this language feature here.

v1.8.0

05 Jan 17:42
Compare
Choose a tag to compare

Changes

As of this release, osx_x86_32 binaries will no longer published (for Mac OS X, 32-bit x86/386 architecture). Only 64-bit binaries will be published for OS X.

Command-line tool

  • A -vv flag has been added, which enables very verbose output mode. For now, the only additional output will be an estimate of the size of each response message, but more output may be added in the future.
  • The "User-Agent" request header sent by grpcurl will now be in the form "grpcurl/" and can also be customized.
  • A -user-agent flag has been added, which allows customizing the "User-Agent" request header. The actual header sent will be the given flag value plus " grpcurl/" appended to it.
  • When the -format-error flag is enabled and an error occurs using service reflection (to download the remote service's descriptors), the error will be formatted in the same machine-friendly format as other RPC errors.

Go package "github.com/fullstorydev/grpcurl"

  • The NewDefaultEventHandler function has been deprecated. Instead, all fields of grpcurl. DefaultEventHandler are now exported, so you can use a struct literal to initialize a handler instance. This adds Out, Formatter, and Verbosity exported fields to the DefaultEventHandler struct.

v1.7.0

31 Jul 02:15
f37ec64
Compare
Choose a tag to compare

Changes

Command-line tool

  • Adds -allow-unknown-fields flag, for more lenient parsing of request JSON. If the input JSON messages contain field names that are unrecognized, they are ignored and the RPC is still made.

Go package "github.com/fullstorydev/grpcurl"

  • A new grpcurl.RequestParserAndFormatter function has been added that accepts grpcurl.FormatOptions to control behavior of the formatter and parser. This replaces the previous function (grpcurl.RequestParserAndFormatterFor), which is now deprecated.

v1.6.1

14 Jul 15:20
b8c67b7
Compare
Choose a tag to compare

Changes

Command-line tool

  • Updates support for xDS service discovery to accept "xds" as the URI scheme, in addition to "xds-experimental". Note that the "xds-experimental" scheme will be unsupported in a future release.

v1.6.0

15 May 12:25
2108c8f
Compare
Choose a tag to compare

Changes

Command-line tool

  • Fixes a bug when using -format text where the program would crash when formatting an empty reponse message.
  • Adds -use-reflection command-line flag. Previously this was true if and only if no -proto or-protoset option were used. This is still the default behavior. But now it can be used with a -proto or -protoset option to use server reflection to resolve the RPC services and schemas but to also provide proto sources to supply message types and extenions that the server may not know about. This can also be used to resolve google.protobuf.Any messages in the response or in RPC error details.
  • Adds -format-error flag which will cause an RPC error to be formatted in a machine-consumable form instead of a human-consumable form. The error will be a google.rpc.Status message representing the error, formatted to stderr as JSON or text, based on the -format in use.
  • The exit code of grpcurl now indicates the gRPC code of any RPC failure that occurs. The exit code will be 64 plus the numeric value of the error code; so if the RPC fails with an INVALID_ARGUMENT error (code 3), the process will exit with a status of 67. Lower exit codes indicate an error that prevented the RPC from being issued: a code of 2 means a usage error, such as invalid combination of command-line options; a code of 1 indicates some other error occurred, such as being unable to open files or dial a server.

v1.5.1

14 Apr 12:28
153d36d
Compare
Choose a tag to compare

This release is only for the Go library. There are no changes to the command-line tool.

Changes

Go package "github.com/fullstorydev/grpcurl"

  • The tests for this package no longer have a dependency on the package "github.com/golang/protobuf/jsonpb/jsonpb_test_proto", which was removed in v1.4 of the protobuf module.

v1.5.0

17 Mar 19:05
96cfd48
Compare
Choose a tag to compare

Changes

Command-line tool

  • Adds support for xDS v2 APIs for service discovery. To enable, you will need to create bootstrap config file and set the GRPC_XDS_BOOTSTRAP environment variable to the path of that file. You can then specify a target using the xds-experimental scheme, like xds-experimental:///example.com (note three slashes). See the gRFC for more details.
  • Adds support for "gzip" encoding. If the server compresses the response using "gzip", it notifies the client using a response header like so grpc-encoding: gzip. The grpcurl command-line tool will now correctly handle such compressed responses.
  • Fixes a bug where grpcurl would send a meta-header of :scheme: http, even when it was using TLS and HTTPS.
  • The -servername command-line flag is being deprecated. Instead, use -authority, which previously only worked for plain-text invocations, but now works for all RPCs. Note that this one flag controls both the :authority meta-header and the server name used in SNI when establishing a TLS connection. It is now an error to specify both -authority and -servername with different values.

Go package "github.com/fullstorydev/grpcurl"

  • The grpcurl.BlockingDial function has been updated to correctly pass :scheme: https meta-header when using TLS. It previously indicated http as the scheme, even when TLS was used.

v1.4.0

30 Sep 15:02
ccc9007
Compare
Choose a tag to compare

Changes

Command-line tool

  • Adds -expand-headers option. This allows secrets to be passed via environment variables instead of on the command-line and then expanded by grpcurl. For example, the following invocation allows the credentials to be supplied in the ACCESS_TOKEN environment variable instead of on the command-line. Notice the use of single quotes, so that the shell does not interpolate the environment variable:
grpcurl -expand-headers \
    -H 'Authorization: token ${ACCESS_TOKEN}' \
    some.endpoint.com:8888 some.Service/Method
  • Adds -protoset-out option. This instructs grpcurl to save the resolved descriptors (which could be downloaded from a server using service reflection) to a file. The file will be in the same format as those produced by protoc, which is a binary-encoded protocol buffer whose message types is google.protobuf.FileDescriptorSet.

Go package "github.com/fullstorydev/grpcurl"

  • Adds grpcurl.ExpandHeaders. This function accepts a slice of header strings and expands ${...} sequences therein, by replacing the sequence with the named environment variable. This can be useful for tools that want to provide the same functionality as grpcurl's -expand-headers flag.
  • Adds grpcurl.WriteProtoset. This function accepts a grpcurl.DescriptorSource for resolving descriptors and a list of symbols to write. It writes the file descriptors that contain the given symbols, as well as the transitive dependencies of those files.

v1.3.2

09 Aug 19:15
4054d1d
Compare
Choose a tag to compare

This fixes an issue in the go.mod file that would prevent earlier versions from working with modules when using Go 1.13.

Since this change only impacts users that are building from source and does not actually impact the resulting binary, this release does not include pre-compiled artifacts. See v1.3.1 for the latest binaries.

v1.3.1

03 Jul 20:02
5631bba
Compare
Choose a tag to compare

Changes

Command-line tool

  • This release fixes a bug that required -proto arguments be relative to the current working directory. Releases prior to v1.3.0 allow arguments to instead be relative to a path named by an -import_path argument. Now -proto arguments can be paths that are relative to either an -import_path argument or the current working directory. The import paths will be preferred, earlier arguments taking precedence over later ones, in the event of ambiguity (i.e. if the relative path matches both a file under an import path and a file under the current working directory).