From cc1c55eeeace69e501e68d6c4b5e5b94ef7d525e Mon Sep 17 00:00:00 2001 From: jarch09 Date: Sat, 10 Sep 2022 14:14:47 -0400 Subject: [PATCH] upgrading to proto3 and using buf.build --- Makefile | 8 ++ buf.gen.yaml | 6 + buf.work.yaml | 4 + testdata/buf.yaml | 10 ++ testdata/protoexample/test.pb.go | 232 +++++++++++-------------------- testdata/protoexample/test.proto | 21 ++- 6 files changed, 127 insertions(+), 154 deletions(-) create mode 100644 buf.gen.yaml create mode 100644 buf.work.yaml create mode 100644 testdata/buf.yaml diff --git a/Makefile b/Makefile index ebde4ee8..16e2ec06 100644 --- a/Makefile +++ b/Makefile @@ -75,3 +75,11 @@ tools: $(GO) install golang.org/x/lint/golint; \ $(GO) install github.com/client9/misspell/cmd/misspell; \ fi + +.PHONY: buf-lint +buf-lint: + @ buf lint + +.PHONY: buf-gen +buf-gen: + @ buf gen diff --git a/buf.gen.yaml b/buf.gen.yaml new file mode 100644 index 00000000..9cfde6c1 --- /dev/null +++ b/buf.gen.yaml @@ -0,0 +1,6 @@ +version: v1 +plugins: + - name: go + out: testdata + path: protoc-gen-go + opt: paths=source_relative diff --git a/buf.work.yaml b/buf.work.yaml new file mode 100644 index 00000000..519e8b39 --- /dev/null +++ b/buf.work.yaml @@ -0,0 +1,4 @@ +--- +version: v1 +directories: + - testdata \ No newline at end of file diff --git a/testdata/buf.yaml b/testdata/buf.yaml new file mode 100644 index 00000000..fc4c14c2 --- /dev/null +++ b/testdata/buf.yaml @@ -0,0 +1,10 @@ +version: v1 +lint: + use: + - DEFAULT + except: + # `Package name "ptypes" should be suffixed with a correctly formed version, such as "ptypes.v1".` + - PACKAGE_VERSION_SUFFIX +breaking: + use: + - FILE \ No newline at end of file diff --git a/testdata/protoexample/test.pb.go b/testdata/protoexample/test.pb.go index 6687aae2..50395a7d 100644 --- a/testdata/protoexample/test.pb.go +++ b/testdata/protoexample/test.pb.go @@ -1,8 +1,8 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.27.0 -// protoc v3.15.8 -// source: test.proto +// protoc-gen-go v1.28.1 +// protoc (unknown) +// source: protoexample/test.proto package protoexample @@ -23,16 +23,25 @@ const ( type FOO int32 const ( - FOO_X FOO = 17 + FOO_FOO_UNSPECIFIED FOO = 0 + FOO_FOO_A FOO = 1 + FOO_FOO_B FOO = 2 + FOO_FOO_C FOO = 3 ) // Enum value maps for FOO. var ( FOO_name = map[int32]string{ - 17: "X", + 0: "FOO_UNSPECIFIED", + 1: "FOO_A", + 2: "FOO_B", + 3: "FOO_C", } FOO_value = map[string]int32{ - "X": 17, + "FOO_UNSPECIFIED": 0, + "FOO_A": 1, + "FOO_B": 2, + "FOO_C": 3, } ) @@ -47,30 +56,20 @@ func (x FOO) String() string { } func (FOO) Descriptor() protoreflect.EnumDescriptor { - return file_test_proto_enumTypes[0].Descriptor() + return file_protoexample_test_proto_enumTypes[0].Descriptor() } func (FOO) Type() protoreflect.EnumType { - return &file_test_proto_enumTypes[0] + return &file_protoexample_test_proto_enumTypes[0] } func (x FOO) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Do not use. -func (x *FOO) UnmarshalJSON(b []byte) error { - num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) - if err != nil { - return err - } - *x = FOO(num) - return nil -} - // Deprecated: Use FOO.Descriptor instead. func (FOO) EnumDescriptor() ([]byte, []int) { - return file_test_proto_rawDescGZIP(), []int{0} + return file_protoexample_test_proto_rawDescGZIP(), []int{0} } type Test struct { @@ -78,21 +77,16 @@ type Test struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Label *string `protobuf:"bytes,1,req,name=label" json:"label,omitempty"` - Type *int32 `protobuf:"varint,2,opt,name=type,def=77" json:"type,omitempty"` - Reps []int64 `protobuf:"varint,3,rep,name=reps" json:"reps,omitempty"` - Optionalgroup *Test_OptionalGroup `protobuf:"group,4,opt,name=OptionalGroup,json=optionalgroup" json:"optionalgroup,omitempty"` + Label string `protobuf:"bytes,1,opt,name=label,proto3" json:"label,omitempty"` + Type *int32 `protobuf:"varint,2,opt,name=type,proto3,oneof" json:"type,omitempty"` + Reps []int64 `protobuf:"varint,3,rep,packed,name=reps,proto3" json:"reps,omitempty"` + OptionalField *string `protobuf:"bytes,4,opt,name=optional_field,json=optionalField,proto3,oneof" json:"optional_field,omitempty"` } -// Default values for Test fields. -const ( - Default_Test_Type = int32(77) -) - func (x *Test) Reset() { *x = Test{} if protoimpl.UnsafeEnabled { - mi := &file_test_proto_msgTypes[0] + mi := &file_protoexample_test_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -105,7 +99,7 @@ func (x *Test) String() string { func (*Test) ProtoMessage() {} func (x *Test) ProtoReflect() protoreflect.Message { - mi := &file_test_proto_msgTypes[0] + mi := &file_protoexample_test_proto_msgTypes[0] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -118,12 +112,12 @@ func (x *Test) ProtoReflect() protoreflect.Message { // Deprecated: Use Test.ProtoReflect.Descriptor instead. func (*Test) Descriptor() ([]byte, []int) { - return file_test_proto_rawDescGZIP(), []int{0} + return file_protoexample_test_proto_rawDescGZIP(), []int{0} } func (x *Test) GetLabel() string { - if x != nil && x.Label != nil { - return *x.Label + if x != nil { + return x.Label } return "" } @@ -132,7 +126,7 @@ func (x *Test) GetType() int32 { if x != nil && x.Type != nil { return *x.Type } - return Default_Test_Type + return 0 } func (x *Test) GetReps() []int64 { @@ -142,116 +136,71 @@ func (x *Test) GetReps() []int64 { return nil } -func (x *Test) GetOptionalgroup() *Test_OptionalGroup { - if x != nil { - return x.Optionalgroup - } - return nil -} - -type Test_OptionalGroup struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - RequiredField *string `protobuf:"bytes,5,req,name=RequiredField" json:"RequiredField,omitempty"` -} - -func (x *Test_OptionalGroup) Reset() { - *x = Test_OptionalGroup{} - if protoimpl.UnsafeEnabled { - mi := &file_test_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Test_OptionalGroup) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Test_OptionalGroup) ProtoMessage() {} - -func (x *Test_OptionalGroup) ProtoReflect() protoreflect.Message { - mi := &file_test_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Test_OptionalGroup.ProtoReflect.Descriptor instead. -func (*Test_OptionalGroup) Descriptor() ([]byte, []int) { - return file_test_proto_rawDescGZIP(), []int{0, 0} -} - -func (x *Test_OptionalGroup) GetRequiredField() string { - if x != nil && x.RequiredField != nil { - return *x.RequiredField +func (x *Test) GetOptionalField() string { + if x != nil && x.OptionalField != nil { + return *x.OptionalField } return "" } -var File_test_proto protoreflect.FileDescriptor +var File_protoexample_test_proto protoreflect.FileDescriptor -var file_test_proto_rawDesc = []byte{ - 0x0a, 0x0a, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0c, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x22, 0xc7, 0x01, 0x0a, 0x04, 0x54, - 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x02, - 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x16, 0x0a, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x3a, 0x02, 0x37, 0x37, 0x52, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x65, 0x70, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x03, 0x52, - 0x04, 0x72, 0x65, 0x70, 0x73, 0x12, 0x46, 0x0a, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, - 0x6c, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0a, 0x32, 0x20, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x54, 0x65, 0x73, 0x74, - 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x0d, - 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x1a, 0x35, 0x0a, - 0x0d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x24, - 0x0a, 0x0d, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x18, - 0x05, 0x20, 0x02, 0x28, 0x09, 0x52, 0x0d, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x46, - 0x69, 0x65, 0x6c, 0x64, 0x2a, 0x0c, 0x0a, 0x03, 0x46, 0x4f, 0x4f, 0x12, 0x05, 0x0a, 0x01, 0x58, - 0x10, 0x11, +var file_protoexample_test_proto_rawDesc = []byte{ + 0x0a, 0x17, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2f, 0x74, + 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0c, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x22, 0x91, 0x01, 0x0a, 0x04, 0x54, 0x65, 0x73, 0x74, + 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x17, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x12, 0x0a, 0x04, 0x72, 0x65, 0x70, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x03, 0x52, 0x04, 0x72, + 0x65, 0x70, 0x73, 0x12, 0x2a, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0d, 0x6f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x42, + 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x2a, 0x3b, 0x0a, 0x03, 0x46, + 0x4f, 0x4f, 0x12, 0x13, 0x0a, 0x0f, 0x46, 0x4f, 0x4f, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, + 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x46, 0x4f, 0x4f, 0x5f, 0x41, + 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x46, 0x4f, 0x4f, 0x5f, 0x42, 0x10, 0x02, 0x12, 0x09, 0x0a, + 0x05, 0x46, 0x4f, 0x4f, 0x5f, 0x43, 0x10, 0x03, 0x42, 0x3d, 0x5a, 0x3b, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x69, 0x6e, 0x2d, 0x67, 0x6f, 0x6e, 0x69, 0x63, + 0x2f, 0x67, 0x69, 0x6e, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x3b, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( - file_test_proto_rawDescOnce sync.Once - file_test_proto_rawDescData = file_test_proto_rawDesc + file_protoexample_test_proto_rawDescOnce sync.Once + file_protoexample_test_proto_rawDescData = file_protoexample_test_proto_rawDesc ) -func file_test_proto_rawDescGZIP() []byte { - file_test_proto_rawDescOnce.Do(func() { - file_test_proto_rawDescData = protoimpl.X.CompressGZIP(file_test_proto_rawDescData) +func file_protoexample_test_proto_rawDescGZIP() []byte { + file_protoexample_test_proto_rawDescOnce.Do(func() { + file_protoexample_test_proto_rawDescData = protoimpl.X.CompressGZIP(file_protoexample_test_proto_rawDescData) }) - return file_test_proto_rawDescData + return file_protoexample_test_proto_rawDescData } -var file_test_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_test_proto_msgTypes = make([]protoimpl.MessageInfo, 2) -var file_test_proto_goTypes = []any{ - (FOO)(0), // 0: protoexample.FOO - (*Test)(nil), // 1: protoexample.Test - (*Test_OptionalGroup)(nil), // 2: protoexample.Test.OptionalGroup +var file_protoexample_test_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_protoexample_test_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_protoexample_test_proto_goTypes = []interface{}{ + (FOO)(0), // 0: protoexample.FOO + (*Test)(nil), // 1: protoexample.Test } -var file_test_proto_depIdxs = []int32{ - 2, // 0: protoexample.Test.optionalgroup:type_name -> protoexample.Test.OptionalGroup - 1, // [1:1] is the sub-list for method output_type - 1, // [1:1] is the sub-list for method input_type - 1, // [1:1] is the sub-list for extension type_name - 1, // [1:1] is the sub-list for extension extendee - 0, // [0:1] is the sub-list for field type_name +var file_protoexample_test_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name } -func init() { file_test_proto_init() } -func file_test_proto_init() { - if File_test_proto != nil { +func init() { file_protoexample_test_proto_init() } +func file_protoexample_test_proto_init() { + if File_protoexample_test_proto != nil { return } if !protoimpl.UnsafeEnabled { - file_test_proto_msgTypes[0].Exporter = func(v any, i int) any { + file_protoexample_test_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Test); i { case 0: return &v.state @@ -263,36 +212,25 @@ func file_test_proto_init() { return nil } } - file_test_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*Test_OptionalGroup); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } } + file_protoexample_test_proto_msgTypes[0].OneofWrappers = []interface{}{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_test_proto_rawDesc, + RawDescriptor: file_protoexample_test_proto_rawDesc, NumEnums: 1, - NumMessages: 2, + NumMessages: 1, NumExtensions: 0, NumServices: 0, }, - GoTypes: file_test_proto_goTypes, - DependencyIndexes: file_test_proto_depIdxs, - EnumInfos: file_test_proto_enumTypes, - MessageInfos: file_test_proto_msgTypes, + GoTypes: file_protoexample_test_proto_goTypes, + DependencyIndexes: file_protoexample_test_proto_depIdxs, + EnumInfos: file_protoexample_test_proto_enumTypes, + MessageInfos: file_protoexample_test_proto_msgTypes, }.Build() - File_test_proto = out.File - file_test_proto_rawDesc = nil - file_test_proto_goTypes = nil - file_test_proto_depIdxs = nil + File_protoexample_test_proto = out.File + file_protoexample_test_proto_rawDesc = nil + file_protoexample_test_proto_goTypes = nil + file_protoexample_test_proto_depIdxs = nil } diff --git a/testdata/protoexample/test.proto b/testdata/protoexample/test.proto index 3e734287..e53a37f3 100644 --- a/testdata/protoexample/test.proto +++ b/testdata/protoexample/test.proto @@ -1,12 +1,19 @@ +syntax = "proto3"; + package protoexample; -enum FOO {X=17;}; +option go_package="github.com/gin-gonic/gin/testdata/protoexample;protoexample"; + +enum FOO { + FOO_UNSPECIFIED = 0; + FOO_A = 1; + FOO_B = 2; + FOO_C = 3; +}; message Test { - required string label = 1; - optional int32 type = 2[default=77]; - repeated int64 reps = 3; - optional group OptionalGroup = 4{ - required string RequiredField = 5; - } + string label = 1; + optional int32 type = 2; + repeated int64 reps = 3; + optional string optional_field = 4; }