in api-generator/main.go [388:425]
func buildMessageType(scope *string, fileName *string, syntax ptype.Syntax, message *descriptor.DescriptorProto, output *output) error {
fields := make([]*ptype.Field, 0, len(message.Field))
fields, err := buildMessageFields(message.Field, fields)
if err != nil {
return errors.Wrap(err, "could not process message fields")
}
options := make([]*ptype.Option, 0)
options, err = buildMessageOptions(message.Options, options)
if err != nil {
return errors.Wrap(err, "could not process message options")
}
oneofs := make([]string, 0, len(message.OneofDecl))
oneofs, err = buildMessageOneofs(message.OneofDecl, oneofs)
if err != nil {
return errors.Wrap(err, "could not process message oneofs")
}
name := fmt.Sprintf("%s.%s", *scope, *message.Name)
result := &ptype.Type{
Name: name,
Fields: fields,
Oneofs: oneofs,
Options: options,
SourceContext: &source_context.SourceContext{FileName: *fileName},
Syntax: syntax,
}
output.Types = append(output.Types, result)
for _, nestedMessage := range message.NestedType {
if err := buildMessageType(&name, fileName, syntax, nestedMessage, output); err != nil {
return errors.Wrapf(err, "could not process nested message %s", *nestedMessage.Name)
}
}
return nil
}