public RunnerRepositoryPreparation( ILogger logger, ICheckOrCloneRepo checkOrClone, IRunnerRepoDirectoryProvider runnerRepoDirectoryProvider, IGetRepoPathValidity getRepoPathValidity, ISchedulerProvider schedulerProvider) { State = getRepoPathValidity.RepoPath .Throttle(TimeSpan.FromMilliseconds(100), schedulerProvider.MainThread) .ObserveOn(schedulerProvider.TaskPool) .SelectReplaceWithIntermediate( new ConfigurationState(ErrorResponse.Fail("Cloning runner repository")) { IsHaltingError = false }, async(path, cancel) => { if (path.RunnableState.Failed) { return(path.ToUnit()); } using var timing = logger.Time($"runner repo: {path.Item}"); return((ErrorResponse)checkOrClone.Check( path.ToGetResponse(), runnerRepoDirectoryProvider.Path, cancel)); }) .Replay(1) .RefCount(); }
public PrepRegistryRepository( ICheckOrCloneRepo checkOrClone, IRemoteRegistryUrlProvider registryUrlProvider, IProvideRepositoryCheckouts repositoryCheckouts, IResetToLatestMain resetToLatestMain, IRegistryFolderProvider registryFolderProvider) { ResetToLatestMain = resetToLatestMain; RegistryUrlProvider = registryUrlProvider; CheckOrClone = checkOrClone; RepositoryCheckouts = repositoryCheckouts; RegistryFolderProvider = registryFolderProvider; }
public PrepareDriverRespository( ILogger logger, ICheckOrCloneRepo checkOrClone, IResetToLatestMain resetToLatestMain, IProvideRepositoryCheckouts repoCheckouts, IGetDriverPaths getDriverPaths, IRetrieveRepoVersioningPoints retrieveRepoVersioningPoints, IDriverRepoDirectoryProvider driverRepoDirectoryProvider) { _logger = logger; CheckOrClone = checkOrClone; ResetToLatestMain = resetToLatestMain; RepoCheckouts = repoCheckouts; GetDriverPaths = getDriverPaths; RetrieveRepoVersioningPoints = retrieveRepoVersioningPoints; DriverRepoDirectoryProvider = driverRepoDirectoryProvider; }