Documentation
¶
Overview ¶
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.
Syntax ¶
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.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func MarshalUntyped ¶
MarshalUntyped marshals a key-value map to flags.
func UnmarshalMessage ¶
UnmarshalMessage unmarshals the proto message from flags.
The descriptor set should be obtained from the `cproto` compiled packages' FileDescriptorSet() method.
func UnmarshalUntyped ¶
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.
Types ¶
type Resolver ¶
type Resolver interface {
// Resolve resolves a type name to
// *descriptor.DescriptorProto or *descriptor.EnumDescriptorProto.
Resolve(name string) interface{}
}
Resolver resolves type names.
func NewResolver ¶
func NewResolver(set *descriptor.FileDescriptorSet) Resolver
NewResolver creates a resolver for all types in a file descriptor set. Resolving time complexity is linear.
Source Files
¶
- doc.go
- generate.go
- marshal.go
- resolver.go
- unmarshal.go