Skip to content
/ grpcexp Public

an interactive explorer for interacting with grpc servers. a tui on top of grpcurl

Notifications You must be signed in to change notification settings

prnvbn/grpcexp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

58 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

grpcexp

grpcexp is an interactive explorer for interacting with grpc servers. It's basically a tui on top of grpcurl.

Demo

Installation

Linux or MacOS

You can install the latest version of grpcexp by running the following command in your terminal.

bash -c "$(curl -fsSL https://raw.githubusercontent.com/prnvbn/grpcexp/main/installer.sh)"

Move the binary to a directory in your PATH. For e.g. /usr/local/bin on linux.

via homebrew

You can install grpcexp using the prnvbn/homebrew-tap.

brew install prnvbn/tap/grpcexp

via go install

go install github.com/prnvbn/grpcexp/cmd/grpcexp@latest

Windows

Windows installation instructions are a WIP. In the meantime, you can download the latest release from the releases page

Note

To update grpcexp to the latest version, simply re-run any of the installation methods above. They always install the most recent release.

Enabling Command Autocompletion

To enable autocomplete, add the following to your .bashrc or .bash_profile file:

# you can also generate completions for zsh and fish shells by replacing bash with zsh or fish
source <(grpcexp completion bash)

Why

Let me preface this by saying, I really like grpcurl but have a few nits:

I have to run ~5 commands to make one grpc call
$ grpcurl -plaintext :50051 list
grpc.reflection.v1.ServerReflection
grpc.reflection.v1alpha.ServerReflection
helloworld.Greeter
$ grpcurl -plaintext :50051 list helloworld.Greeter
helloworld.Greeter.SayHello
$ grpcurl -plaintext :50051 describe helloworld.Greeter.SayHello
helloworld.Greeter.SayHello is a method:
rpc SayHello ( .helloworld.HelloRequest ) returns ( .helloworld.HelloReply );
$ grpcurl -plaintext :50051 describe helloworld.HelloRequest
helloworld.HelloRequest is a message:
message HelloRequest {
string name = 1;
}
$ grpcurl -plaintext -d '{"name": "joe"}' :50051 helloworld.Greeter.SayHello
{
"message": "Hello joe"
}
the lack of POSIX/GNU-style --flags

personal taste.

manual JSON construction for complex types

With grpcurl, you have to manually construct JSON for nested messages, maps, lists, and oneofs which is very tedious.

Contributing

Feel free to open an issue or submit a pull request. I'm always open to suggestions and improvements :)

About

an interactive explorer for interacting with grpc servers. a tui on top of grpcurl

Topics

Resources

Stars

Watchers

Forks