Files
narratio/internal/app/runner_dependencies.go

57 lines
2.0 KiB
Go

package app
import (
"context"
"time"
"gitea.maximumdirect.net/eric/narratio/internal/adapters/audita"
"gitea.maximumdirect.net/eric/narratio/internal/adapters/notarius"
"gitea.maximumdirect.net/eric/narratio/internal/adapters/scriptorium"
"gitea.maximumdirect.net/eric/narratio/internal/adapters/seriatim"
"gitea.maximumdirect.net/eric/narratio/internal/adapters/storage"
"gitea.maximumdirect.net/eric/narratio/internal/adapters/whisperx"
"gitea.maximumdirect.net/eric/narratio/internal/artifacts"
"gitea.maximumdirect.net/eric/narratio/internal/config"
)
type invocationDependencies struct {
now func() time.Time
newRunID func() (string, error)
newWhisperX func(*config.Config) (whisperx.Client, error)
newSeriatim func(*config.Config) (seriatim.Runner, error)
newAudita func(*config.Config) (audita.Runner, error)
newNotarius func() notarius.Runner
newScriptorium func() scriptorium.Runner
newObjectStore func(context.Context, *config.Config) (storage.ObjectStore, error)
}
func (dependencies invocationDependencies) normalized() invocationDependencies {
if dependencies.now == nil {
dependencies.now = nowUTC
}
if dependencies.newRunID == nil {
dependencies.newRunID = artifacts.NewRunID
}
if dependencies.newWhisperX == nil {
dependencies.newWhisperX = buildDefaultWhisperXClient
}
if dependencies.newSeriatim == nil {
dependencies.newSeriatim = buildDefaultSeriatimRunner
}
if dependencies.newAudita == nil {
dependencies.newAudita = buildDefaultAuditaRunner
}
if dependencies.newNotarius == nil {
dependencies.newNotarius = func() notarius.Runner { return notarius.NewSubprocessRunner() }
}
if dependencies.newScriptorium == nil {
dependencies.newScriptorium = func() scriptorium.Runner { return scriptorium.NewSubprocessRunner() }
}
if dependencies.newObjectStore == nil {
dependencies.newObjectStore = func(ctx context.Context, cfg *config.Config) (storage.ObjectStore, error) {
return initializeObjectStoreBackend(ctx, cfg, storage.NewObjectStoreFromConfig)
}
}
return dependencies
}