go-to-protobuf generates a Protobuf IDL from a Go struct, respecting any existing IDL tags on the Go struct.



    This section is empty.


    This section is empty.


    func NewProtoFile

    func NewProtoFile() *generator.DefaultFileType

    func NewProtobufNamer

    func NewProtobufNamer() *protobufNamer

    func RewriteGeneratedGogoProtobufFile

    func RewriteGeneratedGogoProtobufFile(name string, extractFn ExtractFunc, optionalFn OptionalFunc, header []byte) error

    func RewriteTypesWithProtobufStructTags

    func RewriteTypesWithProtobufStructTags(name string, structTags map[string]map[string]string) error

    func Run

    func Run(g *Generator)


    type ExtractFunc

    type ExtractFunc func(*ast.TypeSpec) bool

      ExtractFunc extracts information from the provided TypeSpec and returns true if the type should be removed from the destination file.

      type Generator

      type Generator struct {
      	Common               args.GeneratorArgs
      	APIMachineryPackages string
      	Packages             string
      	OutputBase           string
      	VendorOutputBase     string
      	ProtoImport          []string
      	Conditional          string
      	Clean                bool
      	OnlyIDL              bool
      	KeepGogoproto        bool
      	SkipGeneratedRewrite bool
      	DropEmbeddedFields   string

      func New

      func New() *Generator

      func (*Generator) BindFlags

      func (g *Generator) BindFlags(flag *flag.FlagSet)

      type ImportTracker

      type ImportTracker struct {

      func NewImportTracker

      func NewImportTracker(local types.Name, typesToAdd ...*types.Type) *ImportTracker

      func (*ImportTracker) AddNullable

      func (tracker *ImportTracker) AddNullable()

        AddNullable ensures that support for the nullable Gogo-protobuf extension is added.

        type OptionalFunc

        type OptionalFunc func(name string) bool

          OptionalFunc returns true if the provided local name is a type that has protobuf.nullable=true and should have its marshal functions adjusted to remove the 'Items' accessor.

          type ProtobufFromGoNamer

          type ProtobufFromGoNamer interface {
          	GoNameToProtoName(name types.Name) types.Name

            ProtobufFromGoNamer finds the protobuf name of a type (and its package, and the package path) from its Go name.

            type ProtobufLocator

            type ProtobufLocator interface {
            	ProtoTypeFor(t *types.Type) (*types.Type, error)
            	GoTypeForName(name types.Name) *types.Type
            	CastTypeName(name types.Name) string