refactor flag set methods

This commit is contained in:
filifa 2024-07-28 23:32:50 -05:00
parent adc8177a9b
commit b97e95827c
4 changed files with 28 additions and 28 deletions

View File

@ -33,8 +33,14 @@ func keys[V any](m map[string]V) []string {
return keys return keys
} }
func flagValueError(allowed []string) error { func validateFlag[V any](v string, m map[string]V) error {
sort.Strings(allowed) var err error
allowedList := strings.Join(allowed, ", ") _, ok := m[v]
return errors.New("must be one of " + allowedList) if !ok {
allowed := keys(m)
sort.Strings(allowed)
allowedList := strings.Join(allowed, ", ")
err = errors.New("must be one of " + allowedList)
}
return err
} }

View File

@ -44,17 +44,15 @@ func (t *leagueFlag) String() string {
} }
func (t *leagueFlag) Set(v string) error { func (t *leagueFlag) Set(v string) error {
var err error
v = strings.ToLower(v) v = strings.ToLower(v)
_, ok := leagueIDs[v] err := validateFlag(v, leagueIDs)
if !ok { if err != nil {
allowed := keys(leagueIDs) return err
err = flagValueError(allowed)
} else {
*t = leagueFlag(v)
} }
return err
*t = leagueFlag(v)
return nil
} }
func (t *leagueFlag) Type() string { func (t *leagueFlag) Type() string {

View File

@ -49,17 +49,15 @@ func (t *sportFlag) String() string {
} }
func (t *sportFlag) Set(v string) error { func (t *sportFlag) Set(v string) error {
var err error
v = strings.ToLower(v) v = strings.ToLower(v)
_, ok := sportIDs[v] err := validateFlag(v, sportIDs)
if !ok { if err != nil {
allowed := keys(sportIDs) return err
err = flagValueError(allowed)
} else {
*t = sportFlag(v)
} }
return err
*t = sportFlag(v)
return nil
} }
func (t *sportFlag) Type() string { func (t *sportFlag) Type() string {

View File

@ -61,17 +61,15 @@ func (t *teamFlag) String() string {
} }
func (t *teamFlag) Set(v string) error { func (t *teamFlag) Set(v string) error {
var err error
v = strings.ToLower(v) v = strings.ToLower(v)
_, ok := teamIDs[v] err := validateFlag(v, teamIDs)
if !ok { if err != nil {
allowed := keys(teamIDs) return err
err = flagValueError(allowed)
} else {
*t = teamFlag(v)
} }
return err
*t = teamFlag(v)
return nil
} }
func (t *teamFlag) Type() string { func (t *teamFlag) Type() string {