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); }
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; }
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())); }
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); }); } }
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); } }