func buildFileTypes()

in api-generator/main.go [155:202]


func buildFileTypes(file *descriptor.FileDescriptorProto, output *output) error {
	syntax, err := buildSyntax(file.Syntax)
	if err != nil {
		return errors.Wrap(err, "could not determine file syntax")
	}

	for _, message := range file.MessageType {
		err := buildMessageType(file.Package, file.Name, syntax, message, output)

		if err != nil {
			return errors.Wrapf(err, "could not process message %s", *message.Name)
		}
	}

	for _, enum := range file.EnumType {
		err := buildEnumType(file.Package, file.Name, syntax, enum, output)

		if err != nil {
			return errors.Wrapf(err, "could not process enum %s", *enum.Name)
		}
	}

	for _, service := range file.Service {
		err := buildService(file.Package, file.Name, syntax, service, output)

		if err != nil {
			return errors.Wrapf(err, "could not process service %s", *service.Name)
		}
	}

	extensions := make([]*ptype.Field, 0)
	for _, extension := range file.Extension {
		extensions, err = buildExtension(file.Package, file.Name, syntax, extension, extensions)

		if err != nil {
			return errors.Wrapf(err, "could not process extension %s", *extension.Name)
		}
	}
	// TODO not sure how to use the extensions at this point

	options := make([]*ptype.Option, 0)
	options, err = buildFileOptions(file.Options, options)
	if err != nil {
		return errors.Wrap(err, "could not process file options")
	}

	return nil
}