public static void ActualizeRepositories(IPlatformInfo platform, ICollection <RepositoryModel> repositories, string filePath) { var savedVersions = repositories.Select(r => r.Version).ToList(); foreach (var ver in RepositoryLoader.GetVersions(platform).Where(v => !savedVersions.Contains(v))) { foreach (var directoryPath in Directory.GetDirectories(filePath)) { var dirName = System.IO.Path.GetFileName(directoryPath); var localPath = string.Format(platform.LocalPath, ver); if (dirName != localPath) { continue; } if (!File.Exists(directoryPath + "\\VisualTestsConfig.xml")) { continue; } var repository = new RepositoryModel(Repository.CreateRegular(platform.Name, ver, directoryPath + "\\"), platform); repositories.Add(repository); InitializeBinIfNeed(repository.Path, repository.Version); } } }
public static Config Validate(Config config) { var currentVersion = ServiceLocator.Current.GetInstance <IVersionService>().Version.ToString(); if (string.IsNullOrEmpty(config.LastVersion)) { config.LastVersion = currentVersion; } if (string.IsNullOrEmpty(config.InstallPath)) { config.InstallPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); } if (string.IsNullOrEmpty(config.WorkingDirectory)) { config.WorkingDirectory = @"C:\Work"; } if (string.IsNullOrEmpty(config.WhatsNewSeenForVersion)) { config.WhatsNewSeenForVersion = currentVersion; } if (config.Repositories == null) { config.Repositories = new Repository[0]; } if (config.Repositories.Any(r => r.Platform == null)) { config.Repositories = config.Repositories.Where(r => r.Platform != null).ToArray(); } var reposToDownload = new List <Repository>(); var reposOutdated = new List <Repository>(); foreach (var platform in ServiceLocator.Current.GetInstance <IPlatformProvider>().PlatformInfos) { var conigRepos = config.Repositories.Where(r => r.Platform == platform.Name); var repoVersions = RepositoryLoader.GetVersions(platform); foreach (var version in repoVersions) { if (conigRepos.Select(r => r.Version).Contains(version)) { continue; } reposToDownload.Add(Repository.CreateRegular(platform.Name, version, Path.Combine(config.WorkingDirectory, platform.LocalPath, version))); } foreach (var repo in conigRepos) { if (!repoVersions.Contains(repo.Version)) { reposOutdated.Add(repo); } } } var repos = config.Repositories.ToList(); repos.RemoveAll(reposOutdated.Contains); config.Repositories = repos.ToArray(); if (reposToDownload.Count > 0) { config.Repositories = config.Repositories.Concat(reposToDownload).ToArray(); } return(config); }