Index: client/flagpb/unmarshal.go |
diff --git a/client/flagpb/unmarshal.go b/client/flagpb/unmarshal.go |
index bdeb21f8ca2cea7d5bdaafbaa7f74562e25a9075..f38049bba41dbef2d7673844641204955d597b08 100644 |
--- a/client/flagpb/unmarshal.go |
+++ b/client/flagpb/unmarshal.go |
@@ -12,9 +12,11 @@ import ( |
"strconv" |
"strings" |
+ "github.com/luci/luci-go/common/proto/google/descutil" |
+ |
"github.com/golang/protobuf/jsonpb" |
"github.com/golang/protobuf/proto" |
- "github.com/luci/luci-go/common/proto/google/descriptor" |
+ "google.golang.org/genproto/protobuf" |
) |
// UnmarshalMessage unmarshals the proto message from flags. |
@@ -130,11 +132,11 @@ func (p *parser) parseOneFlag(flags []string, root message) (flagsRest []string, |
// Resolve target field. |
var fieldIndex int |
if target.desc.GetOptions().GetMapEntry() { |
- if fieldIndex = target.desc.FindField("value"); fieldIndex == -1 { |
+ if fieldIndex = descutil.FindField(target.desc, "value"); fieldIndex == -1 { |
return nil, fmt.Errorf("map entry type %s does not have value field", target.desc.GetName()) |
} |
} else { |
- if fieldIndex = target.desc.FindField(name); fieldIndex == -1 { |
+ if fieldIndex = descutil.FindField(target.desc, name); fieldIndex == -1 { |
return nil, fmt.Errorf("field %s not found in message %s", name, target.desc.GetName()) |
} |
} |
@@ -150,7 +152,7 @@ func (p *parser) parseOneFlag(flags []string, root message) (flagsRest []string, |
case field.GetType() == descriptor.FieldDescriptorProto_TYPE_BOOL: |
value = true |
hasValue = true |
- case field.GetType() == descriptor.FieldDescriptorProto_TYPE_MESSAGE && field.Repeated(): |
+ case field.GetType() == descriptor.FieldDescriptorProto_TYPE_MESSAGE && descutil.Repeated(field): |
value = map[string]interface{}{} |
hasValue = true |
@@ -164,7 +166,7 @@ func (p *parser) parseOneFlag(flags []string, root message) (flagsRest []string, |
} |
// Check if the value is already set. |
- if target.data[name] != nil && !field.Repeated() { |
+ if target.data[name] != nil && !descutil.Repeated(field) { |
repeatedFields := make([]string, 0, len(pathMsgs)) |
for _, m := range pathMsgs { |
if m.repeated { |
@@ -186,7 +188,7 @@ func (p *parser) parseOneFlag(flags []string, root message) (flagsRest []string, |
} |
} |
- if !field.Repeated() { |
+ if !descutil.Repeated(field) { |
target.data[name] = value |
} else { |
target.data[name] = append(asSlice(target.data[name]), value) |
@@ -217,11 +219,11 @@ func (p *parser) subMessages(root message, path []string) ([]subMsg, error) { |
var fieldIndex int |
if parent.desc.GetOptions().GetMapEntry() { |
- if fieldIndex = parent.desc.FindField("value"); fieldIndex == -1 { |
+ if fieldIndex = descutil.FindField(parent.desc, "value"); fieldIndex == -1 { |
return nil, fmt.Errorf("map entry type %s does not have value field", parent.desc.GetName()) |
} |
} else { |
- if fieldIndex = parent.desc.FindField(name); fieldIndex == -1 { |
+ if fieldIndex = descutil.FindField(parent.desc, name); fieldIndex == -1 { |
return nil, fmt.Errorf("field %q not found in message %s", name, parent.desc.GetName()) |
} |
} |
@@ -242,7 +244,7 @@ func (p *parser) subMessages(root message, path []string) ([]subMsg, error) { |
sub := subMsg{ |
message: message{desc: subDesc}, |
- repeated: f.Repeated() && !subDesc.GetOptions().GetMapEntry(), |
+ repeated: descutil.Repeated(f) && !subDesc.GetOptions().GetMapEntry(), |
path: curPath, |
} |
if value, ok := parent.data[name]; !ok { |
@@ -361,11 +363,11 @@ func (p *parser) splitKeyValuePair(s string) (key, value string, hasValue bool) |
// parseEnum returns the number of an enum member, which can be name or number. |
func parseEnum(enum *descriptor.EnumDescriptorProto, member string) (int32, error) { |
- i := enum.FindValue(member) |
+ i := descutil.FindEnumValue(enum, member) |
if i < 0 { |
// Is member the number? |
if number, err := strconv.ParseInt(member, 10, 32); err == nil { |
- i = enum.FindValueByNumber(int32(number)) |
+ i = descutil.FindValueByNumber(enum, int32(number)) |
} |
} |
if i < 0 { |