display valid flag values on error

This commit is contained in:
filifa 2024-07-28 19:49:10 -05:00
parent 045d3dece7
commit 36fcbe4a76
3 changed files with 20 additions and 4 deletions

View File

@ -55,7 +55,9 @@ func (t *leagueFlag) Set(v string) error {
_, ok := leagueIDs[v]
if !ok {
err = errors.New("invalid league ID")
allowed := allowedFlags(leagueIDs)
allowedList := strings.Join(allowed, ", ")
err = errors.New("league must be one of " + allowedList)
} else {
*t = leagueFlag(v)
}

View File

@ -93,7 +93,7 @@ func init() {
// Cobra supports local flags which will only run when this command
// is called directly, e.g.:
scheduleCmd.Flags().VarP(&team, "team", "t", "team to get schedule for (atl, az, bal, bos, chc, cin, cle, col, cws, det, hou, kc, laa, lad, mia, mil, min, nym, nyy, oak, phi, pit, sd, sea, sf, stl, tb, tex, tor, wsh)")
scheduleCmd.Flags().VarP(&team, "team", "t", "team to get schedule for")
scheduleCmd.Flags().StringVarP(&date, "date", "d", "", "date to get schedule for (YYYY-MM-DD)")
scheduleCmd.Flags().StringVarP(&sport, "sport", "s", "mlb", "sport to get schedule for (default: MLB)")
scheduleCmd.Flags().StringVarP(&sport, "sport", "s", "mlb", "sport to get schedule for")
}

View File

@ -55,6 +55,18 @@ var teamIDs = map[string]statsapi.TeamID{
"mil": statsapi.MIL,
}
func allowedFlags[V any](m map[string]V) []string {
keys := make([]string, len(m))
i := 0
for k := range m {
keys[i] = k
i++
}
return keys
}
type teamFlag string
func (t *teamFlag) String() string {
@ -72,7 +84,9 @@ func (t *teamFlag) Set(v string) error {
_, ok := teamIDs[v]
if !ok {
err = errors.New("invalid team ID")
allowed := allowedFlags(teamIDs)
allowedList := strings.Join(allowed, ", ")
err = errors.New("team must be one of " + allowedList)
} else {
*t = teamFlag(v)
}