factor flag error handling into function
This commit is contained in:
parent
68b3268054
commit
b856ae50fb
|
@ -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)
|
||||||
}
|
}
|
||||||
|
|
|
@ -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)
|
||||||
}
|
}
|
||||||
|
|
|
@ -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)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue