{"id":20074257,"url":"https://github.com/juniper/protoc-wedge","last_synced_at":"2026-05-11T11:36:15.039Z","repository":{"id":137208756,"uuid":"135521051","full_name":"Juniper/protoc-wedge","owner":"Juniper","description":"protoc-wedge: Generate descriptor files for use with Wedge API broker(https://github.com/Juniper/wedge)","archived":false,"fork":false,"pushed_at":"2018-06-05T15:58:16.000Z","size":129,"stargazers_count":2,"open_issues_count":1,"forks_count":1,"subscribers_count":17,"default_branch":"master","last_synced_at":"2026-04-17T22:37:05.883Z","etag":null,"topics":["avro","grpc","protobuf"],"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/Juniper.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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":"2018-05-31T02:27:35.000Z","updated_at":"2024-11-22T08:00:48.000Z","dependencies_parsed_at":null,"dependency_job_id":"72dfdeed-dcce-4e4b-8fa6-c211994a877f","html_url":"https://github.com/Juniper/protoc-wedge","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Juniper/protoc-wedge","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Juniper%2Fprotoc-wedge","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Juniper%2Fprotoc-wedge/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Juniper%2Fprotoc-wedge/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Juniper%2Fprotoc-wedge/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Juniper","download_url":"https://codeload.github.com/Juniper/protoc-wedge/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Juniper%2Fprotoc-wedge/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32893670,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-10T13:40:02.631Z","status":"online","status_checked_at":"2026-05-11T02:00:05.975Z","response_time":120,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["avro","grpc","protobuf"],"created_at":"2024-11-13T14:50:05.718Z","updated_at":"2026-05-11T11:36:15.017Z","avatar_url":"https://github.com/Juniper.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"### Overview:\n\u003cp\u003e\nprotoc-wedge compiler is an extension to protoc-c and can be used with the\nfollowing options:\n\u003c/p\u003e\n1. avro_out: Generate Apache Avro wedge broker schema from protobuf \u003cbr/\u003e\n2. desc_out: Generate JSON descriptor table from protobuf \u003cbr/\u003e\n3. avsc_out: Generate Apache Avro schema (i.e avsc) from protobuf \u003cbr/\u003e\n4. go_out: Generate golang structs from protobuf for use with JSON \u003cbr/\u003e\n\n\n### pre-requisites\n* [protobuf 3](https://github.com/google/protobuf)\n\n### Installation:\n\u003cp\u003e Once you download the source code from git, update the protobuf-c\nsubmodule that is referenced using the following commands:\n\u003cp\u003e $ git submodule init \u003c/p\u003e\n\u003cp\u003e $ git submodule update \u003c/p\u003e\n\u003c/p\u003e\n\u003cbr/\u003e\n\n\u003cp\u003e Now run the following commands to perform the instalation: \n\u003cp\u003e $ autoreconf --install \u003c/p\u003e\n\u003cp\u003e $ ./configure \u003c/p\u003e\n\u003cp\u003e $ make \u003c/p\u003e\n\u003cp\u003e $ sudo make install \u003c/p\u003e\n\u003cp\u003e On successful completion of the installation, protoc-thrift binary would\nbe added to /usr/local/bin \u003c/p\u003e\n\u003c/p\u003e\n\u003cbr/\u003e\n\n### Usage:\n\n### JSON descriptor map generation:\n\u003cp\u003e To generate the JSON descriptor map corresponding to a set of proto files\ntest1.proto, test2.proto, run the following command: \n\u003cp\u003e $protoc-wedge --desc_out=. test1.proto test2.proto\u003c/p\u003e\n\u003cp\u003e The resultant file \"WedgeProtoDescTable.json\" will be generated in the same\ndirectory. This file will be used an an input for JSON\nmarshalling/unmarshalling and can be used by gRPC, kafka plugins\n\u003c/p\u003e\n\u003c/p\u003e\n\n### Avsc descriptor map generation:\n\u003cp\u003e To generate the avsc schema(s) correponding to a set of proto files\ntest1.proto, test2.proto, run the following command: \n\u003cp\u003e $protoc-wedge --avsc_out=. test1.proto test2.proto\u003c/p\u003e\n\u003cp\u003e An avsc file will be generated for each proto file. The proto files having\nservices specified (i.e) RPCs will have all the record including imports as \na part of single avsc file. The order of imports should be maintained and the\ndependant files should be generated before the proto files importing them.\nFor example,\nif c.proto imports from b.proto which in turn imports from a.proto, then the order\nof generation will be\n\u003c/p\u003e\n\u003cp\u003e $protoc-wedge --avsc_out=. a.proto\u003c/p\u003e\n\u003cp\u003e $protoc-wedge --avsc_out=. a.proto b.proto\u003c/p\u003e\n\u003cp\u003e $protoc-wedge --avsc_out=. a.proto b.proto c.proto\u003c/p\u003e\n\n\u003cp\u003ec.avsc corresponding to c.proto will have all the information from a.proto as\nwell as b.proto so that the avsc file for a service has all the record information\nneeded. The multiple steps with invoking the compiler is due to the fact that\nthe avsc file generated from an imported file is required for generating the\nschema of a subsequent file \n\u003cp\u003e\n\nThis file will be provided an an input for marshalling/unmarshalling\navro binary data to go structs and will be used by kafka plugin\n\u003c/p\u003e\n\u003c/p\u003e\n\n### Avro descriptor map generation:\n\u003cp\u003e To generate the Avro descriptor map correponding to a set of proto files\ntest1.proto, test2.proto, run the following command: \n\u003cp\u003e $protoc-wedge --avro_out=. test1.proto test2.proto\u003c/p\u003e\n\u003cp\u003e The resultant file \"WedgeAvroDescTable.json\" will be generated in the same\ndirectory. This file will be provided as an input for conversion between avro\nand protobuf in the wedge broker.\n\u003c/p\u003e\n\u003c/p\u003e\n\n### Golang structs generation:\n\u003cp\u003e To generate golang structs to execute RPCs from a  set of proto files\ntest1.proto, test2.proto, run the following command: \n\u003cp\u003e $protoc-wedge --go_out=. test1.proto test2.proto\u003c/p\u003e\n\u003cp\u003e The resultant file \"WedgeDesc.go\" will have the json marshalling information\nto generate the JSON Payload for each RPC. This functionality will eventually\nbe extended to marshal more formarts in the future for go clients.\u003c/p\u003e\n\u003c/p\u003e\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjuniper%2Fprotoc-wedge","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjuniper%2Fprotoc-wedge","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjuniper%2Fprotoc-wedge/lists"}