...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 package vanity
30
31 import (
32 "github.com/gogo/protobuf/gogoproto"
33 "github.com/gogo/protobuf/proto"
34 descriptor "github.com/gogo/protobuf/protoc-gen-gogo/descriptor"
35 )
36
37 func EnumHasBoolExtension(enum *descriptor.EnumDescriptorProto, extension *proto.ExtensionDesc) bool {
38 if enum.Options == nil {
39 return false
40 }
41 value, err := proto.GetExtension(enum.Options, extension)
42 if err != nil {
43 return false
44 }
45 if value == nil {
46 return false
47 }
48 if value.(*bool) == nil {
49 return false
50 }
51 return true
52 }
53
54 func SetBoolEnumOption(extension *proto.ExtensionDesc, value bool) func(enum *descriptor.EnumDescriptorProto) {
55 return func(enum *descriptor.EnumDescriptorProto) {
56 if EnumHasBoolExtension(enum, extension) {
57 return
58 }
59 if enum.Options == nil {
60 enum.Options = &descriptor.EnumOptions{}
61 }
62 if err := proto.SetExtension(enum.Options, extension, &value); err != nil {
63 panic(err)
64 }
65 }
66 }
67
68 func TurnOffGoEnumPrefix(enum *descriptor.EnumDescriptorProto) {
69 SetBoolEnumOption(gogoproto.E_GoprotoEnumPrefix, false)(enum)
70 }
71
72 func TurnOffGoEnumStringer(enum *descriptor.EnumDescriptorProto) {
73 SetBoolEnumOption(gogoproto.E_GoprotoEnumStringer, false)(enum)
74 }
75
76 func TurnOnEnumStringer(enum *descriptor.EnumDescriptorProto) {
77 SetBoolEnumOption(gogoproto.E_EnumStringer, true)(enum)
78 }
79
View as plain text