import "github.com/luci/luci-go/client/flagpb"
Package flagpb defines a flag format for protobuf messages, implements a parser and a formatter.
Currently flagpb supports only untyped messages, not proto.Message. Support for the latter could be added too.
Flag syntax by example. First line is flagpb, second is jsonpb.
-x=42 -b -s hello {"x": 42, "b": true, "s": "hello"} -m.x 3 -m.s world {"m": {"x": 3, "s": "world"}} -rx 1 -rx 2 {"rx": [1, 2]} -rm.x 1 -rm -rm.x 2 {"rm": [{"x": 1}, {"x": 2}]}
where x fields are int32, m are message fields, b are boolean and s are strings. Fields with "r" prefix are repeated.
Bytes field values are decoded from hex, e.g. "FF02AB".
Enum field values can be specified by enum member name or number.
doc.go generate.go marshal.go resolver.go unmarshal.go
MarshalUntyped marshals a key-value map to flags.
UnmarshalMessage unmarshals the proto message from flags.
The descriptor set should be obtained from the `cproto` compiled packages' FileDescriptorSet() method.
func UnmarshalUntyped(flags []string, desc *descriptor.DescriptorProto, resolver Resolver) (map[string]interface{}, error)
UnmarshalUntyped unmarshals a key-value map from flags using a protobuf message descriptor.
type Resolver interface { // Resolve resolves a type name to // *descriptor.DescriptorProto or *descriptor.EnumDescriptorProto. Resolve(name string) interface{} }
Resolver resolves type names.
func NewResolver(set *descriptor.FileDescriptorSet) Resolver
NewResolver creates a resolver for all types in a file descriptor set. Resolving time complexity is linear.
Package flagpb imports 11 packages (graph). Updated 2019-02-01. Refresh now. Tools for package owners.