Exemplo n.º 1
0
        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);
                }
            }
        }
Exemplo n.º 2
0
        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);
        }