public static IEnumerable<IPackageInfo> InContentBranch(this IEnumerable<IPackageInfo> allPackages, IEnumerable<PackageDependency> rootDependencies)
 {
     var visitor = new PackageGraphVisitor(allPackages);
     var packagesInContent = allPackages.ToDictionary(x => x.Name, StringComparer.OrdinalIgnoreCase);
     var result = visitor.VisitFrom(rootDependencies, (from, dep, to) =>
     {
         // check if parent is in content branch already
         var parentInContentBranch = from != null && packagesInContent.ContainsKey(from.Name);
         if (parentInContentBranch == false && dep.ContentOnly == false)
             packagesInContent.Remove(to.Name);
         return true;
     });
     return packagesInContent.Select(x=>x.Value);
 }
Ejemplo n.º 2
0
 static List<string> GetPackageNamesInContentBranch(DependencyResolutionResult source, IEnumerable<IPackageInfo> allPackages)
 {
     var visitor = new PackageGraphVisitor(allPackages);
     var packagesInContent = allPackages.Select(x => x.Name).ToList();
     var result = visitor.VisitFromLeafs((from, dep, to) =>
     {
         // check if parent is in content branch already
         var parentInContentBranch = from != null && packagesInContent.Contains(from.Name, StringComparer.OrdinalIgnoreCase);
         if (parentInContentBranch == false && dep.ContentOnly == false)
             packagesInContent.Remove(to.Name);
         return true;
     }, source.Descriptor.Dependencies);
     return packagesInContent;
 }
Ejemplo n.º 3
0
        public static IEnumerable <IPackageInfo> InContentBranch(this IEnumerable <IPackageInfo> allPackages, IEnumerable <PackageDependency> rootDependencies)
        {
            var visitor           = new PackageGraphVisitor(allPackages);
            var packagesInContent = allPackages.ToDictionary(x => x.Name, StringComparer.OrdinalIgnoreCase);
            var result            = visitor.VisitFrom(rootDependencies, (from, dep, to) =>
            {
                // check if parent is in content branch already
                var parentInContentBranch = from != null && packagesInContent.ContainsKey(from.Name);
                if (parentInContentBranch == false && dep.ContentOnly == false)
                {
                    packagesInContent.Remove(to.Name);
                }
                return(true);
            });

            return(packagesInContent.Select(x => x.Value));
        }