package report import ( "fmt" "strings" ) const ( CommandNameDaily = "daily" CommandNameToday = "today" CommandNameTomorrow = "tomorrow" CommandNameHourly = "hourly" CommandNameThreeDay = "three-day" CommandNameWeekend = "weekend" CommandNameStorm = "storm" BatchNameMorning = "morning" BatchNameEvening = "evening" ) func IDForCommandName(name string) (ID, error) { switch name { case CommandNameDaily: return Daily, nil case CommandNameToday: return Today, nil case CommandNameTomorrow: return Tomorrow, nil case CommandNameHourly: return Hourly, nil case CommandNameThreeDay: return ThreeDay, nil case CommandNameWeekend: return Weekend, nil case CommandNameStorm: return Storm, nil default: return "", fmt.Errorf("unknown report command %q", name) } } func CommandNames() []string { return []string{ CommandNameDaily, CommandNameToday, CommandNameTomorrow, CommandNameHourly, CommandNameThreeDay, CommandNameWeekend, CommandNameStorm, } } func IDForConfigKey(key string) (ID, error) { normalized := strings.ReplaceAll(strings.TrimSpace(strings.ToLower(key)), "-", "_") switch normalized { case "daily": return Daily, nil case "today": return Today, nil case "tomorrow": return Tomorrow, nil case "hourly": return Hourly, nil case "three_day", "three_day_outlook": return ThreeDay, nil case "weekend", "weekend_outlook": return Weekend, nil case "storm", "storm_report": return Storm, nil default: return "", fmt.Errorf("report config key %q is not a known report", key) } } func BatchForCommandName(name string) (Batch, error) { switch name { case BatchNameMorning: return Morning, nil case BatchNameEvening: return Evening, nil default: return "", fmt.Errorf("unknown batch command %q", name) } } func BatchCommandNames() []string { return []string{ BatchNameMorning, BatchNameEvening, } }