factor flag error handling into function

This commit is contained in:
filifa 2024-07-28 23:10:50 -05:00
parent 68b3268054
commit b856ae50fb
3 changed files with 13 additions and 17 deletions

View File

@ -16,8 +16,6 @@ this program. If not, see <http://www.gnu.org/licenses/>.
package cmd package cmd
import ( import (
"errors"
"sort"
"strings" "strings"
"scm.dairydemon.net/filifa/mlblive/cmd/internal/statsapi" "scm.dairydemon.net/filifa/mlblive/cmd/internal/statsapi"
@ -56,10 +54,8 @@ func (t *leagueFlag) Set(v string) error {
_, ok := leagueIDs[v] _, ok := leagueIDs[v]
if !ok { if !ok {
allowed := allowedFlags(leagueIDs) allowed := keys(leagueIDs)
sort.Strings(allowed) err = flagValueError("league", allowed)
allowedList := strings.Join(allowed, ", ")
err = errors.New("league must be one of " + allowedList)
} else { } else {
*t = leagueFlag(v) *t = leagueFlag(v)
} }

View File

@ -16,8 +16,6 @@ this program. If not, see <http://www.gnu.org/licenses/>.
package cmd package cmd
import ( import (
"errors"
"sort"
"strings" "strings"
"scm.dairydemon.net/filifa/mlblive/cmd/internal/statsapi" "scm.dairydemon.net/filifa/mlblive/cmd/internal/statsapi"
@ -61,10 +59,8 @@ func (t *sportFlag) Set(v string) error {
_, ok := sportIDs[v] _, ok := sportIDs[v]
if !ok { if !ok {
allowed := allowedFlags(sportIDs) allowed := keys(sportIDs)
sort.Strings(allowed) err = flagValueError("sport", allowed)
allowedList := strings.Join(allowed, ", ")
err = errors.New("sport must be one of " + allowedList)
} else { } else {
*t = sportFlag(v) *t = sportFlag(v)
} }

View File

@ -56,7 +56,7 @@ var teamIDs = map[string]statsapi.TeamID{
"mil": statsapi.MIL, "mil": statsapi.MIL,
} }
func allowedFlags[V any](m map[string]V) []string { func keys[V any](m map[string]V) []string {
keys := make([]string, len(m)) keys := make([]string, len(m))
i := 0 i := 0
@ -68,6 +68,12 @@ func allowedFlags[V any](m map[string]V) []string {
return keys return keys
} }
func flagValueError(name string, allowed []string) error {
sort.Strings(allowed)
allowedList := strings.Join(allowed, ", ")
return errors.New(name + " must be one of " + allowedList)
}
type teamFlag string type teamFlag string
func (t *teamFlag) String() string { func (t *teamFlag) String() string {
@ -85,10 +91,8 @@ func (t *teamFlag) Set(v string) error {
_, ok := teamIDs[v] _, ok := teamIDs[v]
if !ok { if !ok {
allowed := allowedFlags(teamIDs) allowed := keys(teamIDs)
sort.Strings(allowed) err = flagValueError("team", allowed)
allowedList := strings.Join(allowed, ", ")
err = errors.New("team must be one of " + allowedList)
} else { } else {
*t = teamFlag(v) *t = teamFlag(v)
} }