refactor flag set methods
This commit is contained in:
parent
adc8177a9b
commit
b97e95827c
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue