dynamic

package
v0.0.49 Latest Latest
Warning

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

Go to latest
Published: Sep 9, 2025 License: Apache-2.0 Imports: 12 Imported by: 0

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

Constants

This section is empty.

Variables

This section is empty.

Functions

func Get added in v0.0.9

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

Get retrieves a typed value for the given ID and flag field.

func GetOrDefault added in v0.0.14

func GetOrDefault[T any](g *Group, id, flag string) T

GetOrDefault returns the typed value or default if not set.

func MustGet added in v0.0.9

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

MustGet is like Get but panics on failure.

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.

func (*BoolFlag) Get

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

Get returns the value for a given ID and whether it exists.

func (*BoolFlag) Has added in v0.0.19

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

Has reports whether a value was set for the given ID.

func (*BoolFlag) MustGet

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

MustGet returns the value for a given ID or panics if missing.

func (*BoolFlag) Strict

func (b *BoolFlag) Strict() *BoolFlag

Strict enables strict mode on this flag and returns itself.

func (*BoolFlag) Values

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

Values returns all parsed values keyed by ID.

func (*BoolFlag) ValuesAny

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

ValuesAny returns all parsed values as a map of any.

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

func (b *BoolValue) IsStrictBool() bool

IsStrictBool reports whether strict mode is enabled.

func (*BoolValue) IsStrictHidden added in v0.0.19

func (b *BoolValue) IsStrictHidden() bool

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

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

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) Description added in v0.0.19

func (g *Group) Description(s string) *Group

Description sets the group description.

func (*Group) DescriptionText added in v0.0.19

func (g *Group) DescriptionText() string

DescriptionText returns the group description.

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) DynamicFlags added in v0.0.19

func (g *Group) DynamicFlags() []*core.BaseFlag

DynamicFlags returns flags

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) Flags added in v0.0.19

func (g *Group) Flags() []*core.BaseFlag

Flags returns flags in registration order.

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) Get added in v0.0.14

func (g *Group) Get(id string) map[string]any

Get returns all flag values for a given instance ID.

func (*Group) GetPlaceholder added in v0.0.19

func (g *Group) GetPlaceholder() string

GetPlaceholder returns the current placeholder string.

func (*Group) Hidden added in v0.0.19

func (g *Group) Hidden() *Group

Hidden marks the group as hidden from usage output.

func (*Group) Instances

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

Instances returns a sorted list of all seen instance IDs.

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) IsFlagSorted added in v0.0.19

func (g *Group) IsFlagSorted() bool

IsFlagSorted reports whether internal flags should be sorted.

func (*Group) IsHidden added in v0.0.19

func (g *Group) IsHidden() bool

IsHidden reports whether the group is hidden.

func (*Group) Items added in v0.0.9

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

Items returns all registered group items.

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

func (g *Group) LookupFlag(field string) *core.BaseFlag

LookupFlag retrieves the base flag metadata for a given field.

func (*Group) Name added in v0.0.9

func (g *Group) Name() string

Name returns the group prefix.

func (*Group) Note added in v0.0.19

func (g *Group) Note(s string) *Group

Note sets an optional help note for the group.

func (*Group) NoteText added in v0.0.19

func (g *Group) NoteText() string

NoteText returns the group notes.

func (*Group) Placeholder added in v0.0.19

func (g *Group) Placeholder(s string) *Group

Placeholder sets the placeholder string for ID in usage.

func (*Group) SortFlags added in v0.0.19

func (g *Group) SortFlags() *Group

SortFlags enables sorting of flags within the group.

func (*Group) StrictBool added in v0.0.19

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

Bool

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) Title added in v0.0.19

func (g *Group) Title(s string) *Group

Title sets the group section title.

func (*Group) TitleText added in v0.0.19

func (g *Group) TitleText() string

TitleText returns the group title.

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] // 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]) Changed added in v0.0.42

func (f *SliceFlag[T]) Changed() bool

Changed returns true if the value was changed.

func (*SliceFlag[T]) Choices

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

Choices restricts allowed slice values to the given list.

func (*SliceFlag[T]) Default added in v0.0.42

func (f *SliceFlag[T]) Default() []T

Default returns the default value.

func (*SliceFlag[T]) Delimiter

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

Delimiter sets the string delimiter for parsing slice values.

func (*SliceFlag[T]) Finalize added in v0.0.32

func (f *SliceFlag[T]) Finalize(fn func(T) T) *SliceFlag[T]

Finalize sets a custom finalizer function for each element.

func (*SliceFlag[T]) Get

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

Get returns the slice for a given ID and whether it exists.

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

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

Has reports whether a value is set for the given ID.

func (*SliceFlag[T]) MustGet

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

MustGet returns the value or panics if it is not set.

func (*SliceFlag[T]) Validate

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

Validate sets a custom validation function for each element.

func (*SliceFlag[T]) Values

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

Values returns all parsed values keyed by ID.

func (*SliceFlag[T]) ValuesAny

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

ValuesAny returns all values as a map of any.

Jump to

Keyboard shortcuts

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