goprotoc

module
v0.5.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 15, 2022 License: Apache-2.0

README

Go-protoc

Build Status Go Report Card GoDoc

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.

Directories

Path Synopsis
app
goprotoc
Package goprotoc implements the goprotoc command logic.
Package goprotoc implements the goprotoc command logic.
cmd
goprotoc
Command protoc is 100% Go implementation of protoc.
Command protoc is 100% Go implementation of protoc.
protoc-gen-gox
Command protoc-gen-gox is a protoc plugin.
Command protoc-gen-gox is a protoc plugin.
protoc-gen-gox/goxplugin
Package goxplugin is for registering plugins to be executed by the protoc-gen-gox program.
Package goxplugin is for registering plugins to be executed by the protoc-gen-gox program.
Package plugins contains functions that protoc plugins can use to simplify the task of implementing the plugin interface and generating Go code.
Package plugins contains functions that protoc plugins can use to simplify the task of implementing the plugin interface and generating Go code.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL