45 lines
1.2 KiB
Go
45 lines
1.2 KiB
Go
package report
|
|
|
|
import (
|
|
"time"
|
|
|
|
"gitea.maximumdirect.net/eric/weatherreporter/internal/module"
|
|
"gitea.maximumdirect.net/eric/weatherreporter/internal/timeutil"
|
|
)
|
|
|
|
func threeDayDefinition() Definition {
|
|
return Definition{
|
|
ID: ThreeDay,
|
|
Name: "3-Day Outlook",
|
|
PromptID: "weather.three_day_outlook",
|
|
ComparisonStrategy: CompareSameValidDate,
|
|
ArtifactGroup: "three-day",
|
|
BatchOutputName: "three-day.md",
|
|
Generated: true,
|
|
CompatiblePriorIDs: []ID{ThreeDay},
|
|
Modules: threeDayModules(),
|
|
Morning: true,
|
|
resolve: resolveThreeDay,
|
|
}
|
|
}
|
|
|
|
func threeDayModules() []module.ConfigItem {
|
|
return moduleItems(
|
|
module.Metadata,
|
|
module.CurrentConditions,
|
|
module.DerivedDaypartSummaries,
|
|
module.PrecipTiming,
|
|
module.AlertDigest,
|
|
module.AreaForecastDiscussion,
|
|
module.WeatherStory,
|
|
module.OutdoorWindows,
|
|
)
|
|
}
|
|
|
|
func resolveThreeDay(req ResolveRequest) (timeutil.Period, error) {
|
|
localNow := req.Now.In(req.Location)
|
|
endDate := localNow.AddDate(0, 0, 3)
|
|
end := time.Date(endDate.Year(), endDate.Month(), endDate.Day(), 0, 0, 0, 0, req.Location)
|
|
return timeutil.Period{Start: localNow, End: end}, nil
|
|
}
|