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 initializeObjectStoreBackend(ctx, cfg, storage.NewObjectStoreFromConfig) } } if dependencies.loadEffectiveLocks == nil { dependencies.loadEffectiveLocks = loadEffectiveLocks } if dependencies.loadRemoteLockStore == nil { dependencies.loadRemoteLockStore = loadRemoteLockStore } if dependencies.removeScopedDir == nil { dependencies.removeScopedDir = removeRunScopedDir } return dependencies }