func (p *protoBufErrors) lintProtoMessage( pathIndex int32, pathType int32, parentPath []int32, protoMessage *descriptor.DescriptorProto, ) { path := append( parentPath, pathType, pathIndex, ) if !isCamelCase(protoMessage.GetName()) { p.addError(&protoBufError{ path: path, errorCode: errorMessageCase, errorString: protoMessage.GetName(), }) } for i, v := range protoMessage.GetField() { p.lintProtoField(int32(i), path, v) } for i, v := range protoMessage.GetEnumType() { p.lintProtoEnumType(int32(i), pathMessageEnum, path, v) } for i, v := range protoMessage.GetNestedType() { p.lintProtoMessage(int32(i), pathMessageMessage, path, v) } }
func fillTreeWithMessage(tree *tree, key string, proto *descriptor.DescriptorProto, loc string, locs map[string]*descriptor.SourceCodeInfo_Location) *message { key = fmt.Sprintf("%s.%s", key, proto.GetName()) tree.messages[key] = &message{key: key, comment: getComment(loc, locs), DescriptorProto: proto} // Oneofs for idx, proto := range proto.GetOneofDecl() { tree.messages[key].oneofs = append(tree.messages[key].oneofs, &oneof{ index: int32(idx), OneofDescriptorProto: proto, }) } // Fields for idx, proto := range proto.GetField() { field := fillTreeWithField(tree, key, proto, fmt.Sprintf("%s,2,%d", loc, idx), locs) tree.messages[key].fields = append(tree.messages[key].fields, field) } // Nested for idx, proto := range proto.GetNestedType() { message := fillTreeWithMessage(tree, key, proto, fmt.Sprintf("%s,3,%d", loc, idx), locs) tree.messages[key].nested = append(tree.messages[key].nested, message) } // Enums for idx, proto := range proto.GetEnumType() { fillTreeWithEnum(tree, key, proto, fmt.Sprintf("%s,4,%d", loc, idx), locs) } return tree.messages[key] }
func (fg *FileGenerator) GenerateEverything(prefix string, inMessage *descriptor.DescriptorProto) error { newPrefix := prefix + inMessage.GetName() + "_" var err error err = fg.GenerateMessageDefinition(prefix, inMessage) if err != nil { return err } for _, inEnum := range inMessage.GetEnumType() { err = fg.GenerateEnumDefinition(newPrefix, inEnum) if err != nil { return err } } err = fg.GenerateMessageDecoder(prefix, inMessage) if err != nil { return err } for _, inEnum := range inMessage.GetEnumType() { err = fg.GenerateEnumDecoder(newPrefix, inEnum) if err != nil { return err } } err = fg.GenerateMessageEncoder(prefix, inMessage) if err != nil { return err } for _, inEnum := range inMessage.GetEnumType() { err = fg.GenerateEnumEncoder(newPrefix, inEnum) if err != nil { return err } } // Nested messages. for _, nested := range inMessage.GetNestedType() { fg.GenerateEverything(newPrefix, nested) } return nil }