61 lines
2.2 KiB
Go
61 lines
2.2 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)
|
|
removeScopedDir func(root, target, policy string) 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)
|
|
}
|
|
}
|
|
if dependencies.removeScopedDir == nil {
|
|
dependencies.removeScopedDir = removeRunScopedDir
|
|
}
|
|
return dependencies
|
|
}
|