public async Task <int> Run(SettingsContainer settings) { _logger.Detailed($"{Now()}: Started"); _folderFactory.DeleteExistingTempDirs(); _github.Initialise(settings.GithubAuthSettings); 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(_github, 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, gitCreds, userIdentity, settings); if (updatesInThisRepo > 0) { reposUpdated++; } } if (reposUpdated > 1) { _logger.Detailed($"{reposUpdated} repositories were updated"); } _logger.Detailed($"Done at {Now()}"); return(reposUpdated); }