Ejemplo n.º 1
0
        public InstallData Get(string configName = null)
        {
            var proceededModules = new HashSet <string>();

            if (!File.Exists(Path.Combine(path, Helper.YamlSpecFile)))
            {
                return(new InstallData());
            }

            var result = new InstallYamlParser(new FileInfo(path)).Get(configName);

            result.BuildFiles           = result.BuildFiles.Select(r => Path.Combine(moduleName, r)).ToList();
            result.Artifacts            = result.Artifacts.Select(r => Path.Combine(moduleName, r)).ToList();
            result.MainConfigBuildFiles = result.MainConfigBuildFiles.Select(r => Path.Combine(moduleName, r)).ToList();

            proceededModules.Add(Path.GetFileName(path));
            var queue = new Queue <string>();

            EnqueueRange(queue, result.ExternalModules);
            while (queue.Count > 0)
            {
                var externalModule = queue.Dequeue();
                proceededModules.Add(externalModule);
                var proceededExternal = ProceedExternalModule(externalModule, proceededModules);
                result.BuildFiles.AddRange(proceededExternal.BuildFiles.Where(f => !result.BuildFiles.Contains(f)));
                result.ExternalModules.AddRange(proceededExternal.ExternalModules);
                EnqueueRange(queue, proceededExternal.ExternalModules);
            }
            return(result);
        }
Ejemplo n.º 2
0
        public InstallData Get(string configName = null)
        {
            var proceededModules = new HashSet<string>();
            var proceededNuGetPackages = new HashSet<string>();
            if (!File.Exists(Path.Combine(path, Helper.YamlSpecFile)))
                return new InstallData();

            var result = new InstallYamlParser(new FileInfo(path)).Get(configName);
            result.InstallFiles = result.InstallFiles.Select(r => Path.Combine(moduleName, r)).ToList();
            result.Artifacts = result.Artifacts.Select(r => Path.Combine(moduleName, r)).ToList();
            result.CurrentConfigurationInstallFiles = result.CurrentConfigurationInstallFiles.Select(r => Path.Combine(moduleName, r)).ToList();

            proceededModules.Add(Path.GetFileName(path));
            var queue = new Queue<string>(result.ExternalModules);
            while (queue.Count > 0)
            {
                var externalModule = queue.Dequeue();
                proceededModules.Add(externalModule);
                var proceededExternal = ProceedExternalModule(externalModule, proceededModules, proceededNuGetPackages);
                result.InstallFiles.AddRange(proceededExternal.InstallFiles.Where(f => !result.InstallFiles.Contains(f)));
                result.ExternalModules.AddRange(proceededExternal.ExternalModules);
                result.NuGetPackages.AddRange(proceededExternal.NuGetPackages);
                proceededExternal.NuGetPackages.ForEach(m => proceededNuGetPackages.Add(m));
                EnqueueRange(queue, proceededExternal.ExternalModules);
            }
            return result;
        }
Ejemplo n.º 3
0
        private InstallData ProceedExternalModule(string moduleNameWithConfiguration, HashSet <string> proceededModules)
        {
            var dep = new Dep(moduleNameWithConfiguration);
            var externalModulePath  = Path.Combine(path, "..", dep.Name);
            var externalInstallData = new InstallYamlParser(new FileInfo(externalModulePath)).Get(dep.Configuration);

            return(new InstallData(
                       externalInstallData.BuildFiles
                       .Select(f => Path.Combine(dep.Name, f))
                       .ToList(),
                       externalInstallData.ExternalModules
                       .Where(m => !proceededModules.Contains(m))
                       .ToList()));
        }
Ejemplo n.º 4
0
        public void OldYamlParsersDoNotThrow(string path)
        {
            var text = pathToContentMap[path];

            var depsSectionParser    = new DepsYamlParser("fake", text);
            var installSectionParser = new InstallYamlParser("fake", text);
            var buildSectionParser   = new BuildYamlParser("fake", text);

            var configs = depsSectionParser.GetConfigurations();

            foreach (var config in configs)
            {
                Assert.DoesNotThrow(() =>
                {
                    depsSectionParser.Get(config);
                    installSectionParser.Get(config);
                    buildSectionParser.Get(config);
                });
            }
        }
Ejemplo n.º 5
0
        public void EnsureEquivalentInstallSections(string path)
        {
            var text              = pathToContentMap[path];
            var parser            = ModuleYamlParserFactory.Get();
            var installYamlParser = new InstallYamlParser("fake", text);

            var md      = parser.Parse(text);
            var configs = md.AllConfigurations.Keys.ToArray();

            foreach (var config in configs)
            {
                var newInstall = md[config].Installs;
                var oldInstall = installYamlParser.Get(config);

                // todo - disputable - is it equivalent enough is the lists are the same only after Distinct()?
                oldInstall.ExternalModules = oldInstall.ExternalModules?.Distinct().ToList();
                oldInstall.NuGetPackages   = oldInstall.NuGetPackages?.Distinct().ToList();
                newInstall.Should().BeEquivalentTo(oldInstall);
            }
        }