Write reports to operator-selected outputs

This commit is contained in:
2026-08-01 19:33:12 +00:00
parent ac8d618111
commit 62a12dd661
17 changed files with 393 additions and 94 deletions

View File

@@ -42,7 +42,7 @@ type Definition struct {
GeneratedTextSchemaID string
ComparisonStrategy ComparisonStrategy
ArtifactGroup string
BatchOutputName string
OutputName string
DistributorPathTemplates []string
CompatiblePriorIDs []ID
Modules []module.ConfigItem
@@ -52,6 +52,23 @@ type Definition struct {
runIDDisambiguator func(Resolved) string
}
func (r Resolved) OutputName() (string, error) {
if r.Definition.ID == Daily {
if r.ValidPeriod.Start.IsZero() {
return "", fmt.Errorf("daily report has no valid-period start for output naming")
}
location, err := timeutil.LoadLocation(r.Timezone)
if err != nil {
return "", fmt.Errorf("load report timezone for output naming: %w", err)
}
return "daily-" + r.ValidPeriod.Start.In(location).Format(timeutil.DateLayout) + ".md", nil
}
if r.Definition.OutputName == "" {
return "", fmt.Errorf("report %q has no output name", r.Definition.ID)
}
return r.Definition.OutputName, nil
}
func (d Definition) ResolvePeriod(req ResolveRequest) (timeutil.Period, error) {
if d.resolve == nil {
return timeutil.Period{}, fmt.Errorf("report %q has no valid-period resolver", d.ID)