Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jhump/goprotoc
Library for writing protoc plugins in Go; also includes a pure-Go protoc replacement
https://github.com/jhump/goprotoc
codegeneration go golang protobuf protoc-plugin protocol-buffers
Last synced: 13 days ago
JSON representation
Library for writing protoc plugins in Go; also includes a pure-Go protoc replacement
- Host: GitHub
- URL: https://github.com/jhump/goprotoc
- Owner: jhump
- License: apache-2.0
- Created: 2018-05-30T17:08:58.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2024-03-01T16:11:29.000Z (8 months ago)
- Last Synced: 2024-10-20T11:42:40.409Z (19 days ago)
- Topics: codegeneration, go, golang, protobuf, protoc-plugin, protocol-buffers
- Language: Go
- Size: 149 KB
- Stars: 84
- Watchers: 9
- Forks: 7
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-grpc - goprotoc - Library for writing protoc plugins in Go; also includes a pure-Go protoc replacement. (Language-Specific / Go)
README
# Go-protoc
[![Build Status](https://circleci.com/gh/jhump/goprotoc/tree/master.svg?style=svg)](https://circleci.com/gh/jhump/goprotoc/tree/master)
[![Go Report Card](https://goreportcard.com/badge/github.com/jhump/goprotoc)](https://goreportcard.com/report/github.com/jhump/goprotoc)
[![GoDoc](https://godoc.org/github.com/jhump/goprotoc/plugins?status.svg)](https://godoc.org/github.com/jhump/goprotoc/plugins)This repo makes it easy to work in the protobuf tool chain using Go.
## Writing Plugins for `protoc`
First and foremost, the included `plugins` package makes it easy to implement `protoc` plugins in Go. It defines
an interface that plugins implement as well as facilities to actually integrate with `protoc` (e.g. implementing
the proper plugin protocol). It also provides "name resolution" logic: computing qualified names in Go source
code for elements in proto descriptors. This makes it a snap to write plugins in Go that generate additional Go
code from your proto sources.## Pure Go version of `protoc`
This repo also contains a pure-Go re-implementation of `protoc`. This new version of `protoc`, named `goprotoc`
(of course!), will delegate to a `protoc` executable on the path, driving it as if it were a plugin, for generating
C++, C#, Objective-C, Java, JavaScript, Python, PHP, and Ruby code (since they are implemented in `protoc` itself).
But it provides descriptors to `protoc`, parsed by `goprotoc`, instead of having `protoc` re-parse all of the source
code. And it can invoke any other plugins (such as `protoc-gen-go`) the same way that `protoc` would.In addition to the `goprotoc` command, this repo provides a package that other Go programs can use as the
entry-point to running Protocol Buffer code gen, without having to shell out to an external program.## Extras
You'll also find a `protoc` plugin named `protoc-gen-gox` that can be the entry point for generating Go code. It
will delegate to `protoc-gen-go` for standard code gen and gRPC code gen, but it can also be configured to execute
other plugins that emit additional Go code. It's sort of like a plugin multiplexer that supports a configuration
file for enabling and configuring the various plugins that it invokes.