68 lines
1.3 KiB
Go
68 lines
1.3 KiB
Go
package cli
|
|
|
|
type GenericFlag = FlagBase[Value, NoConfig, genericValue]
|
|
|
|
// -- Value Value
|
|
type genericValue struct {
|
|
val Value
|
|
}
|
|
|
|
// Below functions are to satisfy the ValueCreator interface
|
|
|
|
func (f genericValue) Create(val Value, p *Value, c NoConfig) Value {
|
|
*p = val
|
|
return &genericValue{
|
|
val: *p,
|
|
}
|
|
}
|
|
|
|
func (f genericValue) ToString(b Value) string {
|
|
if b != nil {
|
|
return b.String()
|
|
}
|
|
return ""
|
|
}
|
|
|
|
// Below functions are to satisfy the flag.Value interface
|
|
|
|
func (f *genericValue) Set(s string) error {
|
|
if f.val != nil {
|
|
return f.val.Set(s)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (f *genericValue) Get() any {
|
|
if f.val != nil {
|
|
return f.val.Get()
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (f *genericValue) String() string {
|
|
if f.val != nil {
|
|
return f.val.String()
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (f *genericValue) IsBoolFlag() bool {
|
|
if f.val == nil {
|
|
return false
|
|
}
|
|
bf, ok := f.val.(boolFlag)
|
|
return ok && bf.IsBoolFlag()
|
|
}
|
|
|
|
// Generic looks up the value of a local GenericFlag, returns
|
|
// nil if not found
|
|
func (cmd *Command) Generic(name string) Value {
|
|
if v, ok := cmd.Value(name).(Value); ok {
|
|
tracef("generic available for flag name %[1]q with value=%[2]v (cmd=%[3]q)", name, v, cmd.Name)
|
|
return v
|
|
}
|
|
|
|
tracef("generic NOT available for flag name %[1]q (cmd=%[2]q)", name, cmd.Name)
|
|
return nil
|
|
}
|