dynamic

package
v0.0.12 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 24, 2025 License: Apache-2.0 Imports: 11 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Get added in v0.0.9

func Get[T any](g *Group, field, id string) (T, error)

func MustGet added in v0.0.9

func MustGet[T any](g *Group, field, id string) T

Types

type BoolFlag

type BoolFlag struct {
	*builder.DynamicFlag[bool]
	// contains filtered or unexported fields
}

BoolFlag is the builder for per-ID boolean flags.

func (*BoolFlag) Get

func (f *BoolFlag) Get(id string) (bool, bool)

Get retrieves the parsed value.

func (*BoolFlag) MustGet

func (f *BoolFlag) MustGet(id string) bool

MustGet returns the parsed value, panicking if not set.

func (*BoolFlag) Strict

func (b *BoolFlag) Strict() *BoolFlag

Strict requires explicit `=true|false`.

func (*BoolFlag) Values

func (f *BoolFlag) Values() map[string]bool

Values returns all stored values.

func (*BoolFlag) ValuesAny

func (f *BoolFlag) ValuesAny() map[string]any

ValuesAny returns values as a generic map.

type BoolValue

type BoolValue struct {
	// contains filtered or unexported fields
}

BoolValue wraps a DynamicScalarValue[bool] and lets the FSM see IsStrictBool.

func (*BoolValue) IsStrictBool

func (s *BoolValue) IsStrictBool() bool

IsStrictBool reports whether the flag requires an explicit value (--flag=true/false).

func (*BoolValue) Set

func (s *BoolValue) Set(id, raw string) error

Set parses and stores one entry.

type DynamicScalarValue

type DynamicScalarValue[T any] struct {
	// contains filtered or unexported fields
}

DynamicScalarValue parses and stores one value per ID.

func NewDynamicScalarValue

func NewDynamicScalarValue[T any](
	field string,
	def T,
	parse func(string) (T, error),
	format func(T) string,
) *DynamicScalarValue[T]

NewDynamicScalarValue creates a per-ID scalar parser.

func (*DynamicScalarValue[T]) Set

func (d *DynamicScalarValue[T]) Set(id, raw string) error

Set parses and stores one entry.

func (*DynamicScalarValue[T]) ValuesAny added in v0.0.9

func (d *DynamicScalarValue[T]) ValuesAny() map[string]any

type DynamicSliceValue

type DynamicSliceValue[T any] struct {
	// contains filtered or unexported fields
}

DynamicSliceValue parses comma (or custom-sep) lists per ID. For example: --http.alpha.tags=a,b

func NewDynamicSliceValue

func NewDynamicSliceValue[T any](
	field string,
	def []T,
	parse func(string) (T, error),
	format func(T) string,
	delimiter string,
) *DynamicSliceValue[T]

NewDynamicSliceValue builds a per-ID slice parser.

func (*DynamicSliceValue[T]) Set

func (d *DynamicSliceValue[T]) Set(id, input string) error

Set parses and stores the slice from a delimited string for a given ID.

func (*DynamicSliceValue[T]) ValuesAny added in v0.0.9

func (d *DynamicSliceValue[T]) ValuesAny() map[string]any

type FlagSetRef

type FlagSetRef interface {
	RegisterFlag(name string, bf *core.BaseFlag)
	AttachToGroup(*core.BaseFlag, string)
	GetGroup(name string) *core.MutualGroup
	Groups() []*core.MutualGroup
	DefaultDelimiter() string
}

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) Bool

func (g *Group) Bool(field string, def bool, usage string) *BoolFlag

Bool registers a dynamic boolean field under this group.

func (*Group) Bytes

func (g *Group) Bytes(field string, def uint64, usage string) *ScalarFlag[uint64]

Bytes

func (*Group) BytesSlice

func (g *Group) BytesSlice(field string, def []uint64, usage string) *SliceFlag[uint64]

BytesSlice

func (*Group) Duration

func (g *Group) Duration(field string, def time.Duration, usage string) *ScalarFlag[time.Duration]

Duration

func (*Group) DurationSlice

func (g *Group) DurationSlice(field string, def []time.Duration, usage string) *SliceFlag[time.Duration]

DurationSlice

func (*Group) File

func (g *Group) File(field string, def *os.File, usage string) *ScalarFlag[*os.File]

File

func (*Group) FileSlice

func (g *Group) FileSlice(field string, def []*os.File, usage string) *SliceFlag[*os.File]

FileSlice

func (*Group) Float32

func (g *Group) Float32(field string, def float32, usage string) *ScalarFlag[float32]

Float32

func (*Group) Float32Slice

func (g *Group) Float32Slice(field string, def []float32, usage string) *SliceFlag[float32]

Float32Slice

func (*Group) Float64

func (g *Group) Float64(field string, def float64, usage string) *ScalarFlag[float64]

Float64

func (*Group) Float64Slice

func (g *Group) Float64Slice(field string, def []float64, usage string) *SliceFlag[float64]

Float64Slice

func (*Group) Instances

func (g *Group) Instances() []string

Instances returns all seen IDs, sorted.

func (*Group) Int

func (g *Group) Int(field string, def int, usage string) *ScalarFlag[int]

Int

func (*Group) IntSlice

func (g *Group) IntSlice(field string, def []int, usage string) *SliceFlag[int]

IntSlice

func (*Group) Items added in v0.0.9

func (g *Group) Items() map[string]core.DynamicValue

func (*Group) Name added in v0.0.9

func (g *Group) Name() string

func (*Group) String

func (g *Group) String(field string, def string, usage string) *ScalarFlag[string]

String

func (*Group) StringSlice

func (g *Group) StringSlice(field string, def []string, usage string) *SliceFlag[string]

StringSlice

func (*Group) TCPAddr

func (g *Group) TCPAddr(field string, def *net.TCPAddr, usage string) *ScalarFlag[*net.TCPAddr]

TCPAddr

func (*Group) TCPAddrSlice

func (g *Group) TCPAddrSlice(field string, def []*net.TCPAddr, usage string) *SliceFlag[*net.TCPAddr]

TCPAddrSlice

func (*Group) Time

func (g *Group) Time(field string, def time.Time, usage string) *ScalarFlag[time.Time]

Time

func (*Group) TimeSlice

func (g *Group) TimeSlice(field string, def []time.Time, usage string) *SliceFlag[time.Time]

TimeSlice

func (*Group) URL

func (g *Group) URL(field string, def *url.URL, usage string) *ScalarFlag[*url.URL]

URL

func (*Group) URLSlice

func (g *Group) URLSlice(field string, def []*url.URL, usage string) *SliceFlag[*url.URL]

URLSlice

type ScalarFlag

type ScalarFlag[T any] struct {
	*builder.DynamicFlag[T]
	// contains filtered or unexported fields
}

ScalarFlag provides per-ID scalar flags. For example: --http.alpha.port=8080

func (*ScalarFlag[T]) Choices

func (f *ScalarFlag[T]) Choices(allowed ...T) *ScalarFlag[T]

Choices restricts allowed scalar values.

func (*ScalarFlag[T]) Get

func (f *ScalarFlag[T]) Get(id string) (T, bool)

Fallback to default only happens here

func (*ScalarFlag[T]) Has added in v0.0.9

func (f *ScalarFlag[T]) Has(id string) bool

Has returns true if the flag was set

func (*ScalarFlag[T]) MustGet

func (f *ScalarFlag[T]) MustGet(id string) T

func (*ScalarFlag[T]) Validate

func (f *ScalarFlag[T]) Validate(fn func(T) error) *ScalarFlag[T]

Validate lets you plug in arbitrary per‐element checks.

func (*ScalarFlag[T]) Values

func (f *ScalarFlag[T]) Values() map[string]T

Values returns all stored values.

func (*ScalarFlag[T]) ValuesAny

func (f *ScalarFlag[T]) ValuesAny() map[string]any

ValuesAny returns values as a generic map.

type SliceFlag

type SliceFlag[T any] struct {
	*builder.DynamicFlag[T]
	// contains filtered or unexported fields
}

SliceFlag provides per-ID slice flags. e.g., --http.alpha.tags=a,b or --node.node1.labels=env,prod.

func (*SliceFlag[T]) Choices

func (f *SliceFlag[T]) Choices(allowed ...T) *SliceFlag[T]

Choices restricts allowed slice elements.

func (*SliceFlag[T]) Delimiter

func (f *SliceFlag[T]) Delimiter(sep string) *SliceFlag[T]

Delimiter sets the separator between items.

func (*SliceFlag[T]) Get

func (f *SliceFlag[T]) Get(id string) ([]T, bool)

Get returns the parsed slice for the given ID. Fallback to default only happens here

func (*SliceFlag[T]) Has added in v0.0.9

func (f *SliceFlag[T]) Has(id string) bool

Has returns true if the flag was set

func (*SliceFlag[T]) MustGet

func (f *SliceFlag[T]) MustGet(id string) []T

Get returns the parsed slice for the given ID.

func (*SliceFlag[T]) Validate

func (f *SliceFlag[T]) Validate(fn func(T) error) *SliceFlag[T]

Validate lets you plug in arbitrary per‐element checks.

func (*SliceFlag[T]) Values

func (f *SliceFlag[T]) Values() map[string][]T

Values returns all instance values.

func (*SliceFlag[T]) ValuesAny

func (f *SliceFlag[T]) ValuesAny() map[string]any

ValuesAny returns values as a map[string]any for interface compatibility.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL