{"id":13579054,"url":"https://github.com/IBM/gWhisper","last_synced_at":"2025-04-05T20:32:58.939Z","repository":{"id":38458828,"uuid":"172730089","full_name":"IBM/gWhisper","owner":"IBM","description":"A gRPC CLI featuring reflection and tab-completion","archived":false,"fork":false,"pushed_at":"2024-09-25T11:54:18.000Z","size":1218,"stargazers_count":59,"open_issues_count":26,"forks_count":15,"subscribers_count":10,"default_branch":"master","last_synced_at":"2024-12-20T23:33:42.393Z","etag":null,"topics":["auto-completion","autocompletion","bash-completion","cli","color","command-line-tool","completion","debugging-tool","grpc","grpc-cli","grpc-client","protocol-buffers","reflection","remote-procedure-calls"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/IBM.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-02-26T14:43:15.000Z","updated_at":"2024-11-30T01:07:59.000Z","dependencies_parsed_at":"2024-03-18T08:33:33.341Z","dependency_job_id":"78cdd8f4-b286-4648-a8f6-a9a689d05864","html_url":"https://github.com/IBM/gWhisper","commit_stats":null,"previous_names":[],"tags_count":25,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IBM%2FgWhisper","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IBM%2FgWhisper/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IBM%2FgWhisper/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IBM%2FgWhisper/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/IBM","download_url":"https://codeload.github.com/IBM/gWhisper/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247399818,"owners_count":20932875,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["auto-completion","autocompletion","bash-completion","cli","color","command-line-tool","completion","debugging-tool","grpc","grpc-cli","grpc-client","protocol-buffers","reflection","remote-procedure-calls"],"created_at":"2024-08-01T15:01:36.139Z","updated_at":"2025-04-05T20:32:57.154Z","avatar_url":"https://github.com/IBM.png","language":"C++","funding_links":[],"categories":["\u003ca name=\"cpp\"\u003e\u003c/a\u003eC++","Tools","C++"],"sub_categories":["CLI"],"readme":"# gWhisper - A gRPC command line tool\nA gRPC command line client.\nIt allows to invoke gRPC Calls from the commandline, supports tab-completion\nand formats the replies in a human readable format.\n\n![example invocation](doc/exampleHello.gif)\n\nThe main features are:\n\n- Reflection support (no proto files required)\n- Tab completion (currently supported in fish and bash) for\n    - services\n    - methods\n    - method arguments, including nested types\n- Usable directly in the shell\n\nHave a look at the [project scope](doc/PROJECT_SCOPE.md) for details.\n\nSynopsis:\n\n    gwhisper [OPTIONS] \u003chostname\u003e[:port] \u003cservice\u003e \u003cmethod\u003e [\u003cfieldName\u003e=FIELD_VALUE ]...\n\nExecute `gwhisper --help` or click [here](doc/Usage.txt) to get detailed information and examples on how to use the tool.\n\nQuick links:\n- [Usage Manual](doc/Usage.txt)\n- [Project scope](doc/PROJECT_SCOPE.md)\n- [Contributing](CONTRIBUTING.md)\n- [Technical Documentation for Developers](doc/Developer.md)\n- [Frequently Asked Questions](doc/FAQ.md)\n\n## Getting started\n\n### Download\n\nRelease version: [download](https://github.com/IBM/gWhisper/releases/latest)  \nDevelopment version: `git clone https://github.com/IBM/gWhisper.git`\n\n### Prerequisites\n\nTo be able to build and/or run gWhisper, you need to have the following dependencies installed on your system:\n\nMandatory:\n\n- __cmake__(\u003e=3.11)\n- A C++ compiler, e.g. __gcc__\n- Either __bash__, __fish__(\u003e=v2.6)\n\nOptional:\n\n- __openssl__ Required if building the test server to generate test certificates. To disable building the test server, have a look at [Advanced Building](#advanced-building)\n- __gRPC__ If you have gRPC installed on your system this will be used to build against,\notherwise the gWhisper build system will download, build and statically link\ngRPC automatically.\n\n### Build\n\nTo simply build gWhisper in default configuration (including the test server),\njust execute\n\n    ./build.sh\n\nExecutables are now available in the `build/bin` folder.\n\n\nIf you do not want to [install](#Install) gWhisper, you need to source the\ncompletion file (for tab completion):  \n\n`source ./complete.bash` or `source ./complete.fish`\n\nNOTE: By default gWhisper downloads, builds and links gRPC in a version known and tested with gWhisper as part of the build. We made this choice, as we experienced many breaking changes in gRPC and wrongly packaged gRPC installations out there. However if you like, you can also link against your system installation of gRPC to save some build time and executable size. See Chapter [Advanced Building](#advanced-building).\n\n### Install\n\nYou may use the cmake-provided `install` target:\n\n    cd build\n    make install\n\nAlternatively just copy the following files to the appropriate locations:\n\n    cp build/bin/gwhisper /usr/local/bin/\n    cp complete.bash /usr/share/bash-completion/completions/gwhisper\n    cp complete.fish /usr/share/fish/vendor_completions.d/gwhisper.fish\n\n### Advanced building\n\nIf you plan to build gWhisper for packaging or as a developer / contributor, the\nfollowing information might be useful:\n\n#### Directly use CMake to build\n\nFollow the usual CMake flow:\n\n    mkdir build\n    cd build\n    cmake .. \u003ccmake-options\u003e\n    make -j\u003cnumCores\u003e\n\n#### CMake options\nYou can list gWhisper related build options via\n\n    cmake -LAH .. | grep --context 1 GWHISPER\n\nThe following are the most relevant options:\n\n- `GWHISPER_BUILD_TESTS` (default = OFF): Build unit and functional tests\n- `GWHISPER_BUILD_TESTSERVER` (default = ON): Build the testserver. This requires openssl to be installed for certificate creation.\n- `GWHISPER_FORCE_BUILDING_GRPC` (default = ON): Do not use a system installation of gRPC even if found. Instead always download and build gRPC from source\n\nYou can set options in CMake with the `-D` flag. For example:\n\n    cmake .. -D GWHISPER_BUILD_TESTSERVER=OFF\n\n## Examples and Test-Server\nEvery element except the hostname in the following example CLI invocations can be tab-completed in the bash or fish shell.\n\n\nSimple example of an unary RPC with only one field in the request message:\n\n    gwhisper exampledomain.org bakery orderCookies amount=5\n\nNested arguments (the config field contains a sub-message):\n\n    gwhisper exampledomain.org bakery orderCookies config=:chocolate=true smarties=false: amount=5\n\nIPv6 address and explicit TCP port with an enum typed field:\n\n    gwhisper [2001:db8::2:1]:50059 bakery orderCookies type=ChunkyStyle amount=0x7\n\nFeel free to use the _Test-Server_ shipped with gWhisper and try out gWhisper on your own.\nIt is located in `build/bin/testServer` and implements example RPCs which cover almost the\ncomplete gRPC and protocol buffers function set.\n\n## Docker\ngWhisper comes with a Dockerfile which may be used to build and run gWhisper.  \nYou may also use this, to build for different platforms using dockerx/qemu.  \nTo build the docker image execute (from repository root)\n```\ndocker build -t gwhisper -f docker/Dockerfile .\n```\nTo build for a different plattform that your host use buildx (you might need to have QEMU iinstalled):\n```\ndocker buildx build --platform linux/s390x -t gwhisper -f docker/Dockerfile .\n```\n\n## Current development status\n\nBasic functionality is implemented, but you may experience bugs.\nFeel free to try it out and provide feedback/contributions.\n\nWhat is working:\n\n- Tab Completion (bash and fish only)\n- Calling RPCs (unary + streaming)\n- Input and output of all protocol buffer types\n- Security: SSL is supported\n\nSome notable things which are not yet working:\n\n- Using Proto files instead of Reflection API (currently gWhisper only works with servers which have reflection enabled)\n- Performance: Caching of reflection queries\n\n## Supported platforms\n\nDevelopment and testing is done on Fedora Linux 33 and Arch Linux.\nWe expect no bigger problems with building and running this software on different linux distributions.\n\n## Reporting issues\n\nWe really appreciate any kind of feedback :-) So don't hesitate to open a new issue.  \nPlease use the GitGub [issues tab](https://github.com/ibm/gWhisper/issues).\nBe sure to search issues first to avoid duplicate entries.\n\n## Contribute\n\nPlease have a look at [CONTRIBUTE.md](CONTRIBUTING.md) for general information about contributing. \nSome more technical documentation can be found here: [Technical Documentation for Developers](doc/Developer.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FIBM%2FgWhisper","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FIBM%2FgWhisper","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FIBM%2FgWhisper/lists"}