public async Task <int> Run(SettingsContainer settings) { if (settings == null) { throw new ArgumentNullException(nameof(settings)); } _logger.Detailed($"{Now()}: Started"); _folderFactory.DeleteExistingTempDirs(); var user = await _collaborationFactory.CollaborationPlatform.GetCurrentUser(); var credentials = new GitUsernamePasswordCredentials { Username = user.Login, Password = _collaborationFactory.Settings.Token }; var repositories = await _collaborationFactory.RepositoryDiscovery.GetRepositories(settings.SourceControlServerSettings); var reposUpdated = 0; foreach (var repository in repositories) { if (reposUpdated >= settings.UserSettings.MaxRepositoriesChanged) { _logger.Detailed($"Reached max of {reposUpdated} repositories changed"); break; } var updatesInThisRepo = await _repositoryEngine.Run(repository, credentials, settings, user); if (updatesInThisRepo > 0) { reposUpdated++; } } if (reposUpdated > 1) { _logger.Detailed($"{reposUpdated} repositories were updated"); } _logger.Detailed($"Done at {Now()}"); return(reposUpdated); }
public async Task <int> Run(SettingsContainer settings) { if (settings == null) { throw new ArgumentNullException(nameof(settings)); } _logger.Detailed($"{Now()}: Started"); _folderFactory.DeleteExistingTempDirs(); var user = await _collaborationFactory.CollaborationPlatform.GetCurrentUser(); var credentials = new GitUsernamePasswordCredentials { Username = user.Login, Password = _collaborationFactory.Settings.Token }; var repositories = await _collaborationFactory.RepositoryDiscovery.GetRepositories(settings.SourceControlServerSettings); var reposUpdated = 0; (bool Happened, Exception Value)unhandledEx = (false, null); foreach (var repository in repositories) { if (reposUpdated >= settings.UserSettings.MaxRepositoriesChanged) { _logger.Detailed($"Reached max of {reposUpdated} repositories changed"); break; } try { var updatesInThisRepo = await _repositoryEngine.Run(repository, credentials, settings, user); if (updatesInThisRepo > 0) { reposUpdated++; } } #pragma warning disable CA1031 catch (Exception ex) #pragma warning restore CA1031 { _logger.Error($"Failed on repo {repository.RepositoryName}", ex); SetOrUpdateUnhandledException(ref unhandledEx, ex); } } if (reposUpdated > 1) { _logger.Detailed($"{reposUpdated} repositories were updated"); } _logger.Detailed($"Done at {Now()}"); ThrowIfUnhandledException(unhandledEx); return(reposUpdated); }