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
}
func flagValueError(allowed []string) error {
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, ", ")
return errors.New("must be one of " + allowedList)
err = errors.New("must be one of " + allowedList)
}
return err
}

View File

@ -44,19 +44,17 @@ 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
}
*t = leagueFlag(v)
return nil
}
func (t *leagueFlag) Type() string {
return "leagueFlag"
}

View File

@ -49,19 +49,17 @@ 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
}
*t = sportFlag(v)
return nil
}
func (t *sportFlag) Type() string {
return "sportFlag"
}

View File

@ -61,19 +61,17 @@ 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
}
*t = teamFlag(v)
return nil
}
func (t *teamFlag) Type() string {
return "teamFlag"
}