private static void Visit(DscResourceDto item, ICollection <DscResourceDto> sorted, Dictionary <string, bool> visited) { var alreadyVisited = visited.TryGetValue(item.CreateIdForTopologicalSort(), out var inProcess); if (alreadyVisited) { if (inProcess) { throw new ArgumentException("Cyclic dependency found."); } } else { visited[item.CreateIdForTopologicalSort()] = true; var dependencies = item.DependsOn; if (dependencies != null) { foreach (var dependency in dependencies) { Visit(dependency, sorted, visited); } } visited[item.CreateIdForTopologicalSort()] = false; sorted.Add(item); } }
private void GivenDscResourceContainsInformations() { var dscDependency = new ChocolateyPackageDto { ChocolateyPackageName = "Dependency", DependsOn = new List <DscResourceDto>(), Ensure = Ensure.Present, ResourceName = "TestResource", ResourceStepName = "TestStep" }; resourceDto = new ChocolateyPackageDto { ChocolateyPackageName = "TestPackage", DependsOn = new List <DscResourceDto> { dscDependency }, Ensure = Ensure.Absent, ResourceName = "TestMainResource", ResourceStepName = "TestMainStep" }; }
private static string CreateIdForTopologicalSort(this DscResourceDto dscResourceDto) { return($"[{dscResourceDto.ResourceName}]{dscResourceDto.ResourceStepName}"); }
private void WhenConvertingToDto() { resultDto = testChocolateyPackage.ToResourceDto(); }