From fab47cd67ea2aa397c031e548ed1b7fc9c655ad6 Mon Sep 17 00:00:00 2001 From: Tom Fleet Date: Wed, 31 Jul 2024 07:50:22 +0100 Subject: [PATCH] Refactor adding flag to a set (#53) --- internal/flag/set.go | 20 ++++++++++---------- internal/flag/set_test.go | 6 +++--- option.go | 2 +- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/internal/flag/set.go b/internal/flag/set.go index 7d210eb..8f7498e 100644 --- a/internal/flag/set.go +++ b/internal/flag/set.go @@ -21,11 +21,11 @@ func NewSet() *Set { } } -// Add adds a flag to the Set. -func (s *Set) Add(name string, shorthand rune, usage string, flag Value) error { - _, exists := s.flags[name] +// AddToSet adds a flag to the given Set. +func AddToSet[T Flaggable](set *Set, flag Flag[T]) error { + _, exists := set.flags[flag.name] if exists { - return fmt.Errorf("flag %q already defined", name) + return fmt.Errorf("flag %q already defined", flag.name) } var defaultValueNoArg string if flag.Type() == "bool" { @@ -34,17 +34,17 @@ func (s *Set) Add(name string, shorthand rune, usage string, flag Value) error { } entry := flagEntry{ value: flag, - name: name, - usage: usage, + name: flag.name, + usage: flag.usage, defaultValue: flag.String(), defaultValueNoArg: defaultValueNoArg, - shorthand: shorthand, + shorthand: flag.short, } - s.flags[name] = entry + set.flags[flag.name] = entry // Only add the shorthand if it wasn't opted out of - if shorthand != NoShortHand { - s.shorthands[shorthand] = entry + if flag.short != NoShortHand { + set.shorthands[flag.short] = entry } return nil diff --git a/internal/flag/set_test.go b/internal/flag/set_test.go index bccae1a..5953faa 100644 --- a/internal/flag/set_test.go +++ b/internal/flag/set_test.go @@ -122,7 +122,7 @@ func TestParse(t *testing.T) { f, err := flag.New(new(bool), "delete", 'd', false, "Delete something") test.Ok(t, err) - err = set.Add("delete", 'd', "Delete something", f) + err = flag.AddToSet(set, f) test.Ok(t, err) return set @@ -146,7 +146,7 @@ func TestParse(t *testing.T) { f, err := flag.New(new(int), "count", 'c', 0, "Count something") test.Ok(t, err) - err = set.Add("count", 'c', "Count something", f) + err = flag.AddToSet(set, f) test.Ok(t, err) return set @@ -170,7 +170,7 @@ func TestParse(t *testing.T) { f, err := flag.New(new(int), "count", 'c', 0, "Count something") test.Ok(t, err) - err = set.Add("count", 'c', "Count something", f) + err = flag.AddToSet(set, f) test.Ok(t, err) return set diff --git a/option.go b/option.go index 43d6bc2..da8f523 100644 --- a/option.go +++ b/option.go @@ -354,7 +354,7 @@ func Flag[T Flaggable](p *T, name string, short rune, value T, usage string) Opt } // Experimental flags - if err := cfg.xflags.Add(name, short, usage, f); err != nil { + if err := flag.AddToSet(cfg.xflags, f); err != nil { // TODO: This error message is just for me debugging for now, make it more user friendly return fmt.Errorf("xflags.Add: %w", err) } -- knotmirror 0.0.1