Ejemplo n.º 1
0
        protected virtual bool VisitDependency(T package, Func <T, bool?> dependency)
        {
            var result = SuccessfulPackages.Select(dependency)
                         .FirstOrDefault(_ => _ != null);

            if (result == true)
            {
                return(true);
            }
            if (result == false)
            {
                var incompatible = SuccessfulPackages.First(_ => dependency(_) == false);
                IncompatiblePackages.Add(incompatible);
                SuccessfulPackages.Remove(incompatible);
                return(false);
            }

            var matchingPackages =
                Strategy(Packages
                         .Except(IncompatiblePackages)
                         .Where(_ => dependency(_) == true))
                .ToList();

            var b = VisitPackages(matchingPackages);

            return(b);
        }
Ejemplo n.º 2
0
 public DependencyResolutionResult(IPackageDescriptor descriptor, IEnumerable <ResolvedPackage> successfulPackages, IEnumerable <ResolvedPackage> conflictingPackages, IEnumerable <ResolvedPackage> missingPackages)
 {
     Descriptor         = descriptor;
     SuccessfulPackages = successfulPackages.ToList().AsReadOnly();
     DiscardedPackages  = conflictingPackages.ToList().AsReadOnly();
     MissingPackages    = missingPackages.ToList().AsReadOnly();
     //IsSuccess = !(MissingPackages.Any() || DiscardedPackages.Any());
     IsSuccess = !(MissingPackages.Any(x => SuccessfulPackages.None(s => s.Identifier.Name.EqualsNoCase(x.Identifier.Name))) ||
                   DiscardedPackages.Any(x => SuccessfulPackages.None(s => s.Identifier.Name.EqualsNoCase(x.Identifier.Name))));
 }
Ejemplo n.º 3
0
        protected override bool VisitDependency(IPackageInfo package, Func <IPackageInfo, bool?> dependency)
        {
            using (Push(_funcToDep[dependency]))
            {
                var existingPackage = SuccessfulPackages.FirstOrDefault(_ => dependency(_) == true);

                var depSuccess = base.VisitDependency(package, dependency);

                if (depSuccess && existingPackage != null)
                {
                    using (Push(existingPackage.Identifier))
                        Success.Add(new CallStack(_currentNode));
                }

                WriteDebug(depSuccess ? "D:OK" : "D:FAIL");
                return(depSuccess);
            }
        }