30 lines
838 B
Go
30 lines
838 B
Go
package util
|
|
|
|
import (
|
|
"github.com/iancoleman/strcase"
|
|
"google.golang.org/protobuf/reflect/protoreflect"
|
|
"google.golang.org/protobuf/reflect/protoregistry"
|
|
"google.golang.org/protobuf/types/dynamicpb"
|
|
)
|
|
|
|
func DescriptorKebabName(descriptor protoreflect.Descriptor) string {
|
|
return strcase.ToKebab(string(descriptor.Name()))
|
|
}
|
|
|
|
func DescriptorDocs(descriptor protoreflect.Descriptor) string {
|
|
return descriptor.ParentFile().SourceLocations().ByDescriptor(descriptor).LeadingComments
|
|
}
|
|
|
|
func ResolveMessageType(resolver protoregistry.MessageTypeResolver, descriptor protoreflect.MessageDescriptor) protoreflect.MessageType {
|
|
if resolver == nil {
|
|
resolver = protoregistry.GlobalTypes
|
|
}
|
|
|
|
typ, err := resolver.FindMessageByName(descriptor.FullName())
|
|
if err == nil {
|
|
return typ
|
|
}
|
|
|
|
return dynamicpb.NewMessageType(descriptor)
|
|
}
|