private void Walk(INugetDependency package) { var dependencies = package.Package.DependencySets.FirstOrDefault()?.Dependencies; if (dependencies == null) { return; } Parallel.ForEach(dependencies, dependency => { try { IPackage subPackage = ResolveDependency(dependency); var subDependency = new NugetDependency(subPackage); Walk(subDependency); package.FoundDependencies.Add(subDependency); } catch (UnableToResolvePackageDependencyException e) { Log.Error(e.Message); package.UnresolvedDependencies.Add(dependency); } catch (UnableToRetrievePackageException e) { Log.Error(e.Message); package.UnresolvedDependencies.Add(dependency); } catch (ShortCircuitingResolveDependencyException e) { Log.Error(e.Message); package.UnresolvedDependencies.Add(dependency); } }); }
private static bool IsOfInterest(this INugetDependency package, ISolutionDependencyTree tree) { if (tree.Filter.Contains(package.Package.Id)) { return(true); } return(package.FoundDependencies.Any(x => x.IsOfInterest(tree))); }