コード例 #1
0
        public static IEnumerable <IPackage> FindPackages(
            this IPackageRepository repository,
            string packageId,
            IVersionSpec versionSpec,
            bool allowPrereleaseVersions,
            bool allowUnlisted)
        {
            if (repository == null)
            {
                throw new ArgumentNullException("repository");
            }

            if (packageId == null)
            {
                throw new ArgumentNullException("packageId");
            }

            IEnumerable <IPackage> packages = repository.FindPackagesById(packageId)
                                              .OrderByDescending(p => p.Version);

            if (!allowUnlisted)
            {
                packages = packages.Where(PackageExtensions.IsListed);
            }

            if (versionSpec != null)
            {
                packages = packages.FindByVersion(versionSpec);
            }

            packages = DependencyResolveUtility.FilterPackagesByConstraints(NullConstraintProvider.Instance, packages, packageId, allowPrereleaseVersions);

            return(packages);
        }
コード例 #2
0
        public static IPackage FindPackage(this IPackageRepository repository, string packageId, IVersionSpec versionSpec, IPackageConstraintProvider constraintProvider, bool allowPrereleaseVersions, bool allowUnlisted)
        {
            IEnumerable <IPackage> packages = repository.FindPackages(packageId, versionSpec, allowPrereleaseVersions, allowUnlisted);

            if (constraintProvider != null)
            {
                packages = DependencyResolveUtility.FilterPackagesByConstraints(constraintProvider, packages, packageId, allowPrereleaseVersions);
            }
            return(packages.FirstOrDefault <IPackage>());
        }
コード例 #3
0
        public static IPackage FindPackage(this IPackageRepository repository, string packageId, SemanticVersion version, IPackageConstraintProvider constraintProvider, bool allowPrereleaseVersions, bool allowUnlisted)
        {
            if (repository == null)
            {
                throw new ArgumentNullException("repository");
            }
            if (packageId == null)
            {
                throw new ArgumentNullException("packageId");
            }
            if (version != null)
            {
                allowUnlisted = true;
            }
            else if (!allowUnlisted && ((constraintProvider == null) || ReferenceEquals(constraintProvider, NullConstraintProvider.Instance)))
            {
                IPackage             package;
                ILatestPackageLookup lookup2 = repository as ILatestPackageLookup;
                if ((lookup2 != null) && lookup2.TryFindLatestPackageById(packageId, allowPrereleaseVersions, out package))
                {
                    return(package);
                }
            }
            IPackageLookup lookup = repository as IPackageLookup;

            if ((lookup != null) && (version != null))
            {
                return(lookup.FindPackage(packageId, version));
            }
            IEnumerable <IPackage> packages = from p in repository.FindPackagesById(packageId).ToList <IPackage>()
                                              orderby p.Version descending
                                              select p;

            if (!allowUnlisted)
            {
                packages = Enumerable.Where <IPackage>(packages, new Func <IPackage, bool>(PackageExtensions.IsListed));
            }
            if (version != null)
            {
                packages = from p in packages
                           where p.Version == version
                           select p;
            }
            else if (constraintProvider != null)
            {
                packages = DependencyResolveUtility.FilterPackagesByConstraints(constraintProvider, packages, packageId, allowPrereleaseVersions);
            }
            return(packages.FirstOrDefault <IPackage>());
        }
コード例 #4
0
        public static IPackage FindPackage(
            this IPackageRepository repository,
            string packageId,
            SemanticVersion version,
            IPackageConstraintProvider constraintProvider,
            bool allowPrereleaseVersions,
            bool allowUnlisted)
        {
            if (repository == null)
            {
                throw new ArgumentNullException("repository");
            }

            if (packageId == null)
            {
                throw new ArgumentNullException("packageId");
            }

            // if an explicit version is specified, disregard the 'allowUnlisted' argument
            // and always allow unlisted packages.
            if (version != null)
            {
                allowUnlisted = true;
            }
            else if (!allowUnlisted && (constraintProvider == null || constraintProvider == NullConstraintProvider.Instance))
            {
                var packageLatestLookup = repository as ILatestPackageLookup;
                if (packageLatestLookup != null)
                {
                    IPackage package;
                    if (packageLatestLookup.TryFindLatestPackageById(packageId, allowPrereleaseVersions, out package))
                    {
                        return(package);
                    }
                }
            }

            // If the repository implements it's own lookup then use that instead.
            // This is an optimization that we use so we don't have to enumerate packages for
            // sources that don't need to.
            var packageLookup = repository as IPackageLookup;

            if (packageLookup != null && version != null)
            {
                return(packageLookup.FindPackage(packageId, version));
            }

            IEnumerable <IPackage> packages = repository.FindPackagesById(packageId);

            packages = packages.ToList()
                       .OrderByDescending(p => p.Version);

            if (!allowUnlisted)
            {
                packages = packages.Where(PackageExtensions.IsListed);
            }

            if (version != null)
            {
                packages = packages.Where(p => p.Version == version);
            }
            else if (constraintProvider != null)
            {
                packages = DependencyResolveUtility.FilterPackagesByConstraints(constraintProvider, packages, packageId, allowPrereleaseVersions);
            }

            return(packages.FirstOrDefault());
        }