public async Task <int> Run(SettingsContainer settings) { var github = _githubCreator.Create(settings); var repositoryDiscovery = _repositoryDiscoveryCreator.Create(settings); var repositoryEngine = _repositoryEngineCreator.Create(settings); _logger.Verbose($"{Now()}: Started"); _folderFactory.DeleteExistingTempDirs(); var githubUser = await github.GetCurrentUser(); var gitCreds = new UsernamePasswordCredentials { Username = githubUser.Login, Password = settings.GithubAuthSettings.Token }; var userIdentity = GetUserIdentity(githubUser); var repositories = await repositoryDiscovery.GetRepositories(); var reposUpdated = 0; foreach (var repository in repositories) { if (reposUpdated >= settings.UserSettings.MaxRepositoriesChanged) { _logger.Verbose($"Reached max of {reposUpdated} repositories changed"); break; } var updatesInThisRepo = await repositoryEngine.Run(repository, gitCreds, userIdentity); if (updatesInThisRepo > 0) { reposUpdated++; } } if (reposUpdated > 1) { _logger.Verbose($"{reposUpdated} repositories were updated"); } _logger.Verbose($"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; 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 Run() { _folderFactory.DeleteExistingTempDirs(); var githubUser = await _github.GetCurrentUser(); var gitCreds = new UsernamePasswordCredentials { Username = githubUser, Password = _githubToken }; var repositories = await _repositoryDiscovery.GetRepositories(); foreach (var repository in repositories) { await _repositoryEngine.Run(repository, gitCreds); } }
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); }