Skip to content

Commit f6b0106

Browse files
committed
add Usage to the api
1 parent 3c6417a commit f6b0106

File tree

2 files changed

+8
-0
lines changed

2 files changed

+8
-0
lines changed

dyngeneric.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ type DynValue[T any] struct {
8989
notifier func(oldValue T, newValue T)
9090
mutator func(inp T) T
9191
inpMutator func(inp string) string
92+
usage string
9293
}
9394

9495
func Dyn[T DynValueTypes](flagSet *flag.FlagSet, name string, value T, usage string) *DynValue[T] {
@@ -104,6 +105,7 @@ func dynInit[T any](dynValue *DynValue[T], flagSet *flag.FlagSet, name string, v
104105
dynValue.flagSet = flagSet
105106
dynValue.av.Store(value)
106107
dynValue.inpMutator = strings.TrimSpace // default so parsing of numbers etc works well
108+
dynValue.usage = usage
107109
dynValue.ready = true
108110
}
109111

@@ -134,6 +136,11 @@ func (d *DynValue[T]) Get() T {
134136
return d.av.Load().(T)
135137
}
136138

139+
// Usage returns the usage string for the flag.
140+
func (d *DynValue[T]) Usage() string {
141+
return d.usage
142+
}
143+
137144
// CommaStringToSlice converts a coma separated string to a slice.
138145
func CommaStringToSlice(input string) []string {
139146
// originally the heavy handed csv.NewReader(strings.NewReader(input)).Read()

dynstring_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ const notifierTimeout = 100 * time.Millisecond
1717
func TestDynString_SetAndGet(t *testing.T) {
1818
set := flag.NewFlagSet("foobar", flag.ContinueOnError)
1919
dynFlag := DynString(set, "some_string_1", "something", "Use it or lose it")
20+
assert.Equal(t, "Use it or lose it", dynFlag.Usage(), "Usage() should be what was passed in")
2021
assert.Equal(t, "something", dynFlag.Get(), "value must be default after create")
2122
err := set.Set("some_string_1", "else")
2223
assert.NoError(t, err, "setting value must succeed")

0 commit comments

Comments
 (0)