/* Copyright © 2024 filifa This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ package cmd import ( "errors" "strings" "scm.dairydemon.net/filifa/mlblive/cmd/internal/statsapi" ) var teamIDs = map[string]statsapi.TeamID{ "laa": statsapi.LAA, "az": statsapi.AZ, "bal": statsapi.BAL, "bos": statsapi.BOS, "chc": statsapi.CHC, "cin": statsapi.CIN, "cle": statsapi.CLE, "col": statsapi.COL, "det": statsapi.DET, "hou": statsapi.HOU, "kc": statsapi.KC, "lad": statsapi.LAD, "wsh": statsapi.WSH, "nym": statsapi.NYM, "oak": statsapi.OAK, "pit": statsapi.PIT, "sd": statsapi.SD, "sea": statsapi.SEA, "sf": statsapi.SF, "stl": statsapi.STL, "tb": statsapi.TB, "tex": statsapi.TEX, "tor": statsapi.TOR, "min": statsapi.MIN, "phi": statsapi.PHI, "atl": statsapi.ATL, "cws": statsapi.CWS, "mia": statsapi.MIA, "nyy": statsapi.NYY, "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 { return string(*t) } func (t *teamFlag) Set(v string) error { var err error v = strings.ToLower(v) if v == "" { *t = teamFlag(v) return nil } _, ok := teamIDs[v] if !ok { allowed := allowedFlags(teamIDs) allowedList := strings.Join(allowed, ", ") err = errors.New("team must be one of " + allowedList) } else { *t = teamFlag(v) } return err } func (t *teamFlag) Type() string { return "teamFlag" }