Documentation
¶
Overview ¶
Package dynamic implements dynamic flag types that support multiple per-identifier values (e.g. --http.a.timeout, --http.b.timeout). This file defines dummy CLI-facing flag.Value implementations that act as placeholders to satisfy the core.BaseFlag.Value interface without interfering with internal parsing logic.
Index ¶
- func Get[T any](g *Group, id, flag string) (T, error)
- func GetOrDefault[T any](g *Group, id, flag string) T
- func MustGet[T any](g *Group, id, flag string) T
- type BoolFlag
- type BoolValue
- type DynamicScalarValue
- type DynamicSliceValue
- type FlagSetRef
- type Group
- func (g *Group) Bool(field string, def bool, usage string) *BoolFlag
- func (g *Group) Bytes(field string, def uint64, usage string) *ScalarFlag[uint64]
- func (g *Group) BytesSlice(field string, def []uint64, usage string) *SliceFlag[uint64]
- func (g *Group) Description(s string) *Group
- func (g *Group) DescriptionText() string
- func (g *Group) Duration(field string, def time.Duration, usage string) *ScalarFlag[time.Duration]
- func (g *Group) DurationSlice(field string, def []time.Duration, usage string) *SliceFlag[time.Duration]
- func (g *Group) DynamicFlags() []*core.BaseFlag
- func (g *Group) File(field string, def *os.File, usage string) *ScalarFlag[*os.File]
- func (g *Group) FileSlice(field string, def []*os.File, usage string) *SliceFlag[*os.File]
- func (g *Group) Flags() []*core.BaseFlag
- func (g *Group) Float32(field string, def float32, usage string) *ScalarFlag[float32]
- func (g *Group) Float32Slice(field string, def []float32, usage string) *SliceFlag[float32]
- func (g *Group) Float64(field string, def float64, usage string) *ScalarFlag[float64]
- func (g *Group) Float64Slice(field string, def []float64, usage string) *SliceFlag[float64]
- func (g *Group) Get(id string) map[string]any
- func (g *Group) GetPlaceholder() string
- func (g *Group) Hidden() *Group
- func (g *Group) Instances() []string
- func (g *Group) Int(field string, def int, usage string) *ScalarFlag[int]
- func (g *Group) IntSlice(field string, def []int, usage string) *SliceFlag[int]
- func (g *Group) IsFlagSorted() bool
- func (g *Group) IsHidden() bool
- func (g *Group) Items() map[string]core.GroupItem
- func (g *Group) Lookup(field string) (core.DynamicValue, bool)
- func (g *Group) LookupFlag(field string) *core.BaseFlag
- func (g *Group) Name() string
- func (g *Group) Note(s string) *Group
- func (g *Group) NoteText() string
- func (g *Group) Placeholder(s string) *Group
- func (g *Group) SortFlags() *Group
- func (g *Group) StrictBool(field string, def bool, usage string) *BoolFlag
- func (g *Group) String(field string, def string, usage string) *ScalarFlag[string]
- func (g *Group) StringSlice(field string, def []string, usage string) *SliceFlag[string]
- func (g *Group) TCPAddr(field string, def *net.TCPAddr, usage string) *ScalarFlag[*net.TCPAddr]
- func (g *Group) TCPAddrSlice(field string, def []*net.TCPAddr, usage string) *SliceFlag[*net.TCPAddr]
- func (g *Group) Time(field string, def time.Time, usage string) *ScalarFlag[time.Time]
- func (g *Group) TimeSlice(field string, def []time.Time, usage string) *SliceFlag[time.Time]
- func (g *Group) Title(s string) *Group
- func (g *Group) TitleText() string
- func (g *Group) URL(field string, def *url.URL, usage string) *ScalarFlag[*url.URL]
- func (g *Group) URLSlice(field string, def []*url.URL, usage string) *SliceFlag[*url.URL]
- type ScalarFlag
- func (f *ScalarFlag[T]) AllowOverride() *ScalarFlag[T]
- func (f *ScalarFlag[T]) Changed() bool
- func (f *ScalarFlag[T]) Choices(allowed ...T) *ScalarFlag[T]
- func (f *ScalarFlag[T]) Default() T
- func (f *ScalarFlag[T]) Finalize(fn func(T) T) *ScalarFlag[T]
- func (f *ScalarFlag[T]) Get(id string) (T, bool)
- func (f *ScalarFlag[T]) Has(id string) bool
- func (f *ScalarFlag[T]) MustGet(id string) T
- func (f *ScalarFlag[T]) Validate(fn func(T) error) *ScalarFlag[T]
- func (f *ScalarFlag[T]) Values() map[string]T
- func (f *ScalarFlag[T]) ValuesAny() map[string]any
- type SliceFlag
- func (f *SliceFlag[T]) Changed() bool
- func (f *SliceFlag[T]) Choices(allowed ...T) *SliceFlag[T]
- func (f *SliceFlag[T]) Default() []T
- func (f *SliceFlag[T]) Delimiter(sep string) *SliceFlag[T]
- func (f *SliceFlag[T]) Finalize(fn func(T) T) *SliceFlag[T]
- func (f *SliceFlag[T]) Get(id string) ([]T, bool)
- func (f *SliceFlag[T]) Has(id string) bool
- func (f *SliceFlag[T]) MustGet(id string) []T
- func (f *SliceFlag[T]) Validate(fn func(T) error) *SliceFlag[T]
- func (f *SliceFlag[T]) Values() map[string][]T
- func (f *SliceFlag[T]) ValuesAny() map[string]any
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func GetOrDefault ¶ added in v0.0.14
GetOrDefault returns the typed value or default if not set.
Types ¶
type BoolFlag ¶
type BoolFlag struct { *builder.DynamicFlag[bool] // Embedded base flag metadata // contains filtered or unexported fields }
BoolFlag represents a dynamic boolean flag with per-ID values.
type BoolValue ¶
type BoolValue struct { *DynamicScalarValue[bool] // Underlying parsed values and metadata // contains filtered or unexported fields }
BoolValue wraps a dynamic boolean value with optional strict mode.
func (*BoolValue) Base ¶ added in v0.0.19
func (b *BoolValue) Base() *DynamicScalarValue[bool]
Base returns the underlying DynamicScalarValue.
func (*BoolValue) IsStrictBool ¶
IsStrictBool reports whether strict mode is enabled.
func (*BoolValue) IsStrictHidden ¶ added in v0.0.19
IsStrictHidden reports whether the flag is hidden from usage output.
type DynamicScalarValue ¶
type DynamicScalarValue[T any] struct { // contains filtered or unexported fields }
DynamicScalarValue holds parsed scalar values per ID with parsing, formatting, and validation.
func NewDynamicScalarValue ¶
func NewDynamicScalarValue[T any](field string, def T, parse func(string) (T, error), format func(T) string) *DynamicScalarValue[T]
NewDynamicScalarValue creates a new dynamic scalar value.
func (*DynamicScalarValue[T]) Base ¶ added in v0.0.19
func (d *DynamicScalarValue[T]) Base() *DynamicScalarValue[T]
Base returns itself for generic access.
func (*DynamicScalarValue[T]) FieldName ¶ added in v0.0.13
func (d *DynamicScalarValue[T]) FieldName() string
FieldName returns the field name of the flag.
func (*DynamicScalarValue[T]) GetAny ¶ added in v0.0.13
func (d *DynamicScalarValue[T]) GetAny(id string) (any, bool)
GetAny returns the value as any for a given ID, falling back to default.
func (*DynamicScalarValue[T]) Set ¶
func (d *DynamicScalarValue[T]) Set(id, raw string) error
Set parses and stores a value for a specific ID.
func (*DynamicScalarValue[T]) ValuesAny ¶ added in v0.0.9
func (d *DynamicScalarValue[T]) ValuesAny() map[string]any
ValuesAny returns all stored values as a map of any.
type DynamicSliceValue ¶
type DynamicSliceValue[T any] struct { // contains filtered or unexported fields }
DynamicSliceValue holds parsed slice values per ID with parsing, formatting, and validation.
func NewDynamicSliceValue ¶
func NewDynamicSliceValue[T any]( field string, def []T, parse func(string) (T, error), format func(T) string, delimiter string, ) *DynamicSliceValue[T]
NewDynamicSliceValue creates a new dynamic slice value.
func (*DynamicSliceValue[T]) FieldName ¶ added in v0.0.13
func (d *DynamicSliceValue[T]) FieldName() string
FieldName returns the field name of the flag.
func (*DynamicSliceValue[T]) GetAny ¶ added in v0.0.13
func (d *DynamicSliceValue[T]) GetAny(id string) (any, bool)
GetAny returns the slice as any for a given ID, falling back to default.
func (*DynamicSliceValue[T]) Set ¶
func (d *DynamicSliceValue[T]) Set(id, raw string) error
Set parses and stores one or more values for a given ID.
func (*DynamicSliceValue[T]) ValuesAny ¶ added in v0.0.9
func (d *DynamicSliceValue[T]) ValuesAny() map[string]any
ValuesAny returns all values as a map of any.
type FlagSetRef ¶
type FlagSetRef interface { RegisterFlag(name string, bf *core.BaseFlag) AttachToOneOfGroup(*core.BaseFlag, string) GetOneOfGroup(name string) *core.OneOfGroupGroup OneOfGroups() []*core.OneOfGroupGroup DefaultDelimiter() string LookupFlag(name string) *core.BaseFlag GetAllOrNoneGroup(name string) *core.AllOrNoneGroup }
FlagSetRef is the subset of FlagSet needed by dynamic flags.
type Group ¶
type Group struct {
// contains filtered or unexported fields
}
Group manages a set of dynamic flags under one prefix.
func NewGroup ¶
func NewGroup(fs FlagSetRef, prefix string) *Group
NewGroup starts a new dynamic group.
func (*Group) BytesSlice ¶
BytesSlice
func (*Group) Description ¶ added in v0.0.19
Description sets the group description.
func (*Group) DescriptionText ¶ added in v0.0.19
DescriptionText returns the group description.
func (*Group) DurationSlice ¶
func (g *Group) DurationSlice(field string, def []time.Duration, usage string) *SliceFlag[time.Duration]
DurationSlice
func (*Group) DynamicFlags ¶ added in v0.0.19
DynamicFlags returns flags
func (*Group) Float32Slice ¶
Float32Slice
func (*Group) Float64Slice ¶
Float64Slice
func (*Group) GetPlaceholder ¶ added in v0.0.19
GetPlaceholder returns the current placeholder string.
func (*Group) IsFlagSorted ¶ added in v0.0.19
IsFlagSorted reports whether internal flags should be sorted.
func (*Group) Lookup ¶ added in v0.0.13
func (g *Group) Lookup(field string) (core.DynamicValue, bool)
Lookup retrieves the dynamic value interface for a given field.
func (*Group) LookupFlag ¶ added in v0.0.19
LookupFlag retrieves the base flag metadata for a given field.
func (*Group) Placeholder ¶ added in v0.0.19
Placeholder sets the placeholder string for ID in usage.
func (*Group) StrictBool ¶ added in v0.0.19
Bool
func (*Group) StringSlice ¶
StringSlice
func (*Group) TCPAddrSlice ¶
func (g *Group) TCPAddrSlice(field string, def []*net.TCPAddr, usage string) *SliceFlag[*net.TCPAddr]
TCPAddrSlice
type ScalarFlag ¶
type ScalarFlag[T any] struct { *builder.DynamicFlag[T] // Embedded base flag metadata // contains filtered or unexported fields }
ScalarFlag represents a typed dynamic scalar flag with per-ID values.
func (*ScalarFlag[T]) AllowOverride ¶ added in v0.0.49
func (f *ScalarFlag[T]) AllowOverride() *ScalarFlag[T]
AllowOverride enforces per-id single assignment.
func (*ScalarFlag[T]) Changed ¶ added in v0.0.42
func (f *ScalarFlag[T]) Changed() bool
Changed returns true if the value was changed.
func (*ScalarFlag[T]) Choices ¶
func (f *ScalarFlag[T]) Choices(allowed ...T) *ScalarFlag[T]
Choices restricts the allowed values to the provided list.
func (*ScalarFlag[T]) Default ¶ added in v0.0.9
func (f *ScalarFlag[T]) Default() T
Default returns the default value.
func (*ScalarFlag[T]) Finalize ¶ added in v0.0.32
func (f *ScalarFlag[T]) Finalize(fn func(T) T) *ScalarFlag[T]
Finalize adds a custom finalizer function for values.
func (*ScalarFlag[T]) Get ¶
func (f *ScalarFlag[T]) Get(id string) (T, bool)
Get returns the value for the given ID and whether it exists.
func (*ScalarFlag[T]) Has ¶ added in v0.0.9
func (f *ScalarFlag[T]) Has(id string) bool
Has reports whether a value was set for the given ID.
func (*ScalarFlag[T]) MustGet ¶
func (f *ScalarFlag[T]) MustGet(id string) T
MustGet returns the value or panics if missing.
func (*ScalarFlag[T]) Validate ¶
func (f *ScalarFlag[T]) Validate(fn func(T) error) *ScalarFlag[T]
Validate adds a custom validation function for values.
func (*ScalarFlag[T]) Values ¶
func (f *ScalarFlag[T]) Values() map[string]T
Values returns all parsed values keyed by ID.
func (*ScalarFlag[T]) ValuesAny ¶
func (f *ScalarFlag[T]) ValuesAny() map[string]any
ValuesAny returns all values as a map of any.
type SliceFlag ¶
type SliceFlag[T any] struct { *builder.DynamicFlag[T] // Embedded flag metadata // contains filtered or unexported fields }
SliceFlag represents a dynamic slice flag with per-ID values.
func (*SliceFlag[T]) Default ¶ added in v0.0.42
func (f *SliceFlag[T]) Default() []T
Default returns the default value.
func (*SliceFlag[T]) Finalize ¶ added in v0.0.32
Finalize sets a custom finalizer function for each element.