Documentation ¶
Overview ¶
Package protoplugin provides utilities for protoc plugins.
The only functions that should be called as of now is Main. The rest are not guaranteed to stay here.
This was HEAVILY adapted from github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway.
Eventually, a rewrite of this to be simpler for what we need would be nice, but this was available to get us here, especially with handling go imports.
Note that "FQMN", "FQSN", etc stand for "Fully Qualified Message Name", "Fully Qualified Service Name", etc, which denotes the package and object name together.
Index ¶
- func Do(runner Runner, reader io.Reader, writer io.Writer) error
- func ReadRequest(reader io.Reader) (*plugin_go.CodeGeneratorRequest, error)
- func WriteResponse(writer io.Writer, response *plugin_go.CodeGeneratorResponse) error
- type Enum
- type Field
- type File
- type GoPackage
- type Message
- type Method
- type Runner
- type Service
- type TemplateInfo
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Do ¶ added in v1.9.0
Do is a helper function for protobuf plugins.
func main() { if err := protoplugin.Do(runner, os.Stdin, os.Stdout); err != nil { log.Fatal(err) } }
func ReadRequest ¶ added in v1.9.0
ReadRequest reads the request from the reader.
func WriteResponse ¶ added in v1.9.0
WriteResponse writes the response to the writer.
Types ¶
type Enum ¶
type Enum struct { *descriptor.EnumDescriptorProto File *File // Outers is a list of outer messages if this enum is a nested type. Outers []string Index int }
Enum describes a protocol buffer enum type.
type Field ¶
type Field struct { *descriptor.FieldDescriptorProto // Message is the message type which this field belongs to. Message *Message // FieldMessage is the message type of the field. FieldMessage *Message }
Field wraps descriptor.FieldDescriptorProto for richer features.
type File ¶
type File struct { *descriptor.FileDescriptorProto GoPackage *GoPackage Messages []*Message Enums []*Enum Services []*Service TransitiveDependencies []*File }
File wraps descriptor.FileDescriptorProto for richer features.
func (*File) SerializedFileDescriptor ¶ added in v1.35.0
SerializedFileDescriptor returns a gzipped marshalled representation of the FileDescriptor.
type GoPackage ¶
type GoPackage struct { Path string Name string // Alias is an alias of the package unique within the current invocation of the generator. Alias string }
GoPackage represents a golang package.
type Message ¶
type Message struct { *descriptor.DescriptorProto File *File // Outers is a list of outer messages if this message is a nested type. Outers []string Fields []*Field // Index is proto path index of this message in File. Index int }
Message describes a protocol buffer message types.
type Method ¶
type Method struct { *descriptor.MethodDescriptorProto Service *Service RequestType *Message ResponseType *Message }
Method wraps descriptor.MethodDescriptorProto for richer features.
type Runner ¶ added in v1.9.0
type Runner interface {
Run(*plugin_go.CodeGeneratorRequest) *plugin_go.CodeGeneratorResponse
}
Runner runs the plugin logic.
func NewMultiRunner ¶ added in v1.28.0
NewMultiRunner returns a new Runner that executes all the given Runners and merges the resulting CodeGeneratorResponses.
type Service ¶
type Service struct { *descriptor.ServiceDescriptorProto File *File Methods []*Method }
Service wraps descriptor.ServiceDescriptorProto for richer features.
type TemplateInfo ¶
TemplateInfo is the info passed to a template.