diff --git a/cmd/leagueflag.go b/cmd/leagueflag.go index 6d3964f..de4b1ea 100644 --- a/cmd/leagueflag.go +++ b/cmd/leagueflag.go @@ -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) } diff --git a/cmd/schedule.go b/cmd/schedule.go index b269273..f8e88b7 100644 --- a/cmd/schedule.go +++ b/cmd/schedule.go @@ -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") } diff --git a/cmd/teamflag.go b/cmd/teamflag.go index ba00b5a..aa8e32b 100644 --- a/cmd/teamflag.go +++ b/cmd/teamflag.go @@ -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) }