Documentation ¶
Index ¶
- type DynProto3Value
- func (d *DynProto3Value) Get() proto.Message
- func (d *DynProto3Value) PrettyString() string
- func (d *DynProto3Value) Set(input string) error
- func (d *DynProto3Value) String() string
- func (d *DynProto3Value) Type() string
- func (d *DynProto3Value) WithFileFlag(defaultPath string) *DynProto3Value
- func (d *DynProto3Value) WithNotifier(notifier func(oldValue proto.Message, newValue proto.Message)) *DynProto3Value
- func (d *DynProto3Value) WithValidator(validator func(proto.Message) error) *DynProto3Value
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type DynProto3Value ¶
type DynProto3Value struct {
// contains filtered or unexported fields
}
DynJSONValue is a flag-related JSON struct value wrapper.
func DynProto3 ¶
func DynProto3(flagSet *flag.FlagSet, name string, value proto.Message, usage string) *DynProto3Value
DynProto3 creates a `Flag` that is backed by an arbitrary Proto3-generated datastructure which is safe to change dynamically at runtime either through JSONPB encoding or Proto encoding. The `value` must be a pointer to a struct that is JSONPB/Proto (un)marshallable. New values based on the default constructor of `value` type will be created on each update.
func (*DynProto3Value) Get ¶
func (d *DynProto3Value) Get() proto.Message
Get retrieves the value in its original JSON struct type in a thread-safe manner.
func (*DynProto3Value) PrettyString ¶
func (d *DynProto3Value) PrettyString() string
PrettyString returns a nicely structured representation of the type. In this case it returns a pretty-printed JSON.
func (*DynProto3Value) Set ¶
func (d *DynProto3Value) Set(input string) error
Set updates the value from a string representation in a thread-safe manner. This operation may return an error if the provided `input` doesn't parse, or the resulting value doesn't pass an optional validator. If a notifier is set on the value, it will be invoked in a separate go-routine.
func (*DynProto3Value) String ¶
func (d *DynProto3Value) String() string
String returns the canonical string representation of the type. In this case it returns the JSONPB representation of the object.
func (*DynProto3Value) Type ¶
func (d *DynProto3Value) Type() string
Type is an indicator of what this flag represents.
func (*DynProto3Value) WithFileFlag ¶
func (d *DynProto3Value) WithFileFlag(defaultPath string) *DynProto3Value
WithFileFlag adds an companion <name>_path flag that allows this value to be read from a file with flagz.ReadFileFlags.
This is useful for reading large proto files as flags. If the companion flag's value (whether default or overwritten) is set to empty string, nothing is read.
Flag value reads are subject to notifiers and validators.
func (*DynProto3Value) WithNotifier ¶
func (d *DynProto3Value) WithNotifier(notifier func(oldValue proto.Message, newValue proto.Message)) *DynProto3Value
WithNotifier adds a function is called every time a new value is successfully set. Each notifier is executed in a new go-routine.
func (*DynProto3Value) WithValidator ¶
func (d *DynProto3Value) WithValidator(validator func(proto.Message) error) *DynProto3Value
WithValidator adds a function that checks values before they're set. Any error returned by the validator will lead to the value being rejected. Validators are executed on the same go-routine as the call to `Set`.