normalizers: added a structure for normalizers; refactoring sources -> sources+normalizers is still todo.

This commit is contained in:
2026-01-14 10:35:16 -06:00
parent aa4774e0dd
commit efc44e8c6a
7 changed files with 272 additions and 1 deletions

View File

@@ -14,11 +14,13 @@ import (
"gitea.maximumdirect.net/ejr/feedkit/config"
fkdispatch "gitea.maximumdirect.net/ejr/feedkit/dispatch"
fkevent "gitea.maximumdirect.net/ejr/feedkit/event"
fknormalize "gitea.maximumdirect.net/ejr/feedkit/normalize"
fkpipeline "gitea.maximumdirect.net/ejr/feedkit/pipeline"
fkscheduler "gitea.maximumdirect.net/ejr/feedkit/scheduler"
fksinks "gitea.maximumdirect.net/ejr/feedkit/sinks"
fksources "gitea.maximumdirect.net/ejr/feedkit/sources"
wfnormalizers "gitea.maximumdirect.net/ejr/weatherfeeder/internal/normalizers"
wfsources "gitea.maximumdirect.net/ejr/weatherfeeder/internal/sources"
)
@@ -90,8 +92,20 @@ func main() {
events := make(chan fkevent.Event, 256)
// --- Normalization (optional) ---
//
// We install feedkit's normalize.Processor even before any normalizers exist.
// With an empty registry and RequireMatch=false, this is a no-op passthrough.
// It will begin transforming events as soon as:
// 1) sources emit raw schemas (raw.*), and
// 2) matching normalizers are registered.
normReg := &fknormalize.Registry{}
wfnormalizers.RegisterBuiltins(normReg)
pl := &fkpipeline.Pipeline{
Processors: nil,
Processors: []fkpipeline.Processor{
fknormalize.Processor{Registry: normReg},
},
}
s := &fkscheduler.Scheduler{