Back to godoc.org

Package flagpb

v0.0.0-...-1557bcf
Latest Go to latest

The latest major version is .

Published: Aug 13, 2020 | License: Apache-2.0 | Module: github.com/luci/luci-go

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

func MarshalUntyped

func MarshalUntyped(msg map[string]interface{}) ([]string, error)

MarshalUntyped marshals a key-value map to flags.

func UnmarshalMessage

func UnmarshalMessage(flags []string, resolver Resolver, msg proto.Message) error

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.

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.

Package Files

Documentation was rendered with GOOS=linux and GOARCH=amd64.

Jump to identifier

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to identifier