protopluginv2

package
v1.69.1 Latest Latest
Warning

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

Go to latest
Published: Jan 25, 2023 License: MIT Imports: 16 Imported by: 0

Documentation

Overview

Package protopluginv2 provides utilities for protoc plugins.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Do

func Do(runner Runner, reader io.Reader, writer io.Writer) error

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

func ReadRequest(reader io.Reader) (*plugin_go.CodeGeneratorRequest, error)

ReadRequest reads the request from the reader.

func WriteResponse

func WriteResponse(writer io.Writer, response *plugin_go.CodeGeneratorResponse) error

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.

func (*Enum) FQEN

func (e *Enum) FQEN() string

FQEN returns a fully qualified enum name of this enum.

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

func (f *File) SerializedFileDescriptor() ([]byte, error)

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.

func (*GoPackage) Standard

func (g *GoPackage) Standard() bool

Standard returns whether the import is a golang standard package.

func (*GoPackage) String

func (g *GoPackage) String() string

String returns a string representation of this package in the form of import line in golang.

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.

func (*Message) FQMN

func (m *Message) FQMN() string

FQMN returns a fully qualified message name of this message.

func (*Message) GoType

func (m *Message) GoType(currentPackage string) string

GoType returns a go type name for the message type. It prefixes the type name with the package alias if its belonging package is not "currentPackage".

type Method

type Method struct {
	*descriptor.MethodDescriptorProto
	Service      *Service
	RequestType  *Message
	ResponseType *Message
}

Method wraps descriptor.MethodDescriptorProto for richer features.

type Runner

type Runner interface {
	Run(*plugin_go.CodeGeneratorRequest) *plugin_go.CodeGeneratorResponse
}

Runner runs the plugin logic.

func NewMultiRunner

func NewMultiRunner(runners ...Runner) Runner

NewMultiRunner returns a new Runner that executes all the given Runners and merges the resulting CodeGeneratorResponses.

func NewRunner

func NewRunner(
	tmpl *template.Template,
	templateInfoChecker func(*TemplateInfo) error,
	baseImports []string,
	fileToOutputFilename func(*File) (string, error),
	unknownFlagHandler func(key string, value string) error,
) Runner

NewRunner returns a new Runner.

type Service

type Service struct {
	*descriptor.ServiceDescriptorProto
	File    *File
	Methods []*Method
}

Service wraps descriptor.ServiceDescriptorProto for richer features.

func (*Service) FQSN

func (s *Service) FQSN() string

FQSN returns a fully qualified service name of this service.

type TemplateInfo

type TemplateInfo struct {
	*File
	Imports []*GoPackage
}

TemplateInfo is the info passed to a template.

Jump to

Keyboard shortcuts

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