Releases: fullstorydev/grpcurl
Releases · fullstorydev/grpcurl
v1.8.2
Changes
Command-line tool
- Several bugs have been addressed in the library used to parse proto source files. Previously
grpcurl
would accept proto source files that could not actually be compiled withprotoc
. This release links in the newer version of that library.
Go package "github.com/fullstorydev/grpcurl"
- Callers of
grpcurl.BlockingDial
can now supply the dial optiongrpc.FailOnNonTempDialError(false)
, to prevent the fast-fail behavior for certain kinds of errors (such as "connection refused"). Previously, even if this option were provided, it would be ignored/overwritten by other options thatBlockingDial
uses.
v1.8.1
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
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 ofgrpcurl. DefaultEventHandler
are now exported, so you can use a struct literal to initialize a handler instance. This addsOut
,Formatter
, andVerbosity
exported fields to theDefaultEventHandler
struct.
v1.7.0
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 acceptsgrpcurl.FormatOptions
to control behavior of the formatter and parser. This replaces the previous function (grpcurl.RequestParserAndFormatterFor
), which is now deprecated.
v1.6.1
v1.6.0
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 resolvegoogle.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 agoogle.rpc.Status
message representing the error, formatted tostderr
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 anINVALID_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
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
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 thexds-experimental
scheme, likexds-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
. Thegrpcurl
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 indicatedhttp
as the scheme, even when TLS was used.
v1.4.0
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 bygrpcurl
. For example, the following invocation allows the credentials to be supplied in theACCESS_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 instructsgrpcurl
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 byprotoc
, which is a binary-encoded protocol buffer whose message types isgoogle.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 asgrpcurl
's-expand-headers
flag. - Adds
grpcurl.WriteProtoset
. This function accepts agrpcurl.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
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.