Isolate invocation collaborator composition
This commit is contained in:
68
internal/app/runner_dependencies.go
Normal file
68
internal/app/runner_dependencies.go
Normal file
@@ -0,0 +1,68 @@
|
||||
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)
|
||||
loadEffectiveLocks func(context.Context, *config.Config, storage.ObjectStore) (*effectiveLocks, error)
|
||||
loadRemoteLockStore func(context.Context, *config.Config, storage.ObjectStore) (*config.PublishLockStore, string, string, 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 newCommandObjectStore(ctx, cfg, nil)
|
||||
}
|
||||
}
|
||||
if dependencies.loadEffectiveLocks == nil {
|
||||
dependencies.loadEffectiveLocks = loadEffectiveLocks
|
||||
}
|
||||
if dependencies.loadRemoteLockStore == nil {
|
||||
dependencies.loadRemoteLockStore = loadRemoteLockStore
|
||||
}
|
||||
if dependencies.removeScopedDir == nil {
|
||||
dependencies.removeScopedDir = removeRunScopedDir
|
||||
}
|
||||
return dependencies
|
||||
}
|
||||
Reference in New Issue
Block a user