From b97e95827c8c28f225ae7346436f58d659198fa2 Mon Sep 17 00:00:00 2001 From: filifa Date: Sun, 28 Jul 2024 23:32:50 -0500 Subject: [PATCH] refactor flag set methods --- cmd/common.go | 14 ++++++++++---- cmd/leagueflag.go | 14 ++++++-------- cmd/sportflag.go | 14 ++++++-------- cmd/teamflag.go | 14 ++++++-------- 4 files changed, 28 insertions(+), 28 deletions(-) diff --git a/cmd/common.go b/cmd/common.go index 0863a40..d7f18b2 100644 --- a/cmd/common.go +++ b/cmd/common.go @@ -33,8 +33,14 @@ func keys[V any](m map[string]V) []string { return keys } -func flagValueError(allowed []string) error { - sort.Strings(allowed) - allowedList := strings.Join(allowed, ", ") - return errors.New("must be one of " + allowedList) +func validateFlag[V any](v string, m map[string]V) error { + var err error + _, ok := m[v] + if !ok { + allowed := keys(m) + sort.Strings(allowed) + allowedList := strings.Join(allowed, ", ") + err = errors.New("must be one of " + allowedList) + } + return err } diff --git a/cmd/leagueflag.go b/cmd/leagueflag.go index fbbfdf8..3a4fb60 100644 --- a/cmd/leagueflag.go +++ b/cmd/leagueflag.go @@ -44,17 +44,15 @@ func (t *leagueFlag) String() string { } func (t *leagueFlag) Set(v string) error { - var err error v = strings.ToLower(v) - _, ok := leagueIDs[v] - if !ok { - allowed := keys(leagueIDs) - err = flagValueError(allowed) - } else { - *t = leagueFlag(v) + err := validateFlag(v, leagueIDs) + if err != nil { + return err } - return err + + *t = leagueFlag(v) + return nil } func (t *leagueFlag) Type() string { diff --git a/cmd/sportflag.go b/cmd/sportflag.go index bce07b4..c6d5896 100644 --- a/cmd/sportflag.go +++ b/cmd/sportflag.go @@ -49,17 +49,15 @@ func (t *sportFlag) String() string { } func (t *sportFlag) Set(v string) error { - var err error v = strings.ToLower(v) - _, ok := sportIDs[v] - if !ok { - allowed := keys(sportIDs) - err = flagValueError(allowed) - } else { - *t = sportFlag(v) + err := validateFlag(v, sportIDs) + if err != nil { + return err } - return err + + *t = sportFlag(v) + return nil } func (t *sportFlag) Type() string { diff --git a/cmd/teamflag.go b/cmd/teamflag.go index ce7507c..73a9832 100644 --- a/cmd/teamflag.go +++ b/cmd/teamflag.go @@ -61,17 +61,15 @@ func (t *teamFlag) String() string { } func (t *teamFlag) Set(v string) error { - var err error v = strings.ToLower(v) - _, ok := teamIDs[v] - if !ok { - allowed := keys(teamIDs) - err = flagValueError(allowed) - } else { - *t = teamFlag(v) + err := validateFlag(v, teamIDs) + if err != nil { + return err } - return err + + *t = teamFlag(v) + return nil } func (t *teamFlag) Type() string {