Пример #1
0
        public override Task <IEnumerable <NuGetVersion> > GetVersions(
            string packageId,
            bool includePrerelease,
            bool includeUnlisted,
            ILogger log,
            CancellationToken token)
        {
            token.ThrowIfCancellationRequested();

            return(Task.Run <IEnumerable <NuGetVersion> >(() =>
            {
                try
                {
                    return _localResource.FindPackagesById(packageId, log, token)
                    .Select(p => p.Identity.Version)
                    .Where(v => includePrerelease || !v.IsPrerelease)
                    .Distinct()
                    .ToArray();
                }
                catch (Exception ex)
                {
                    throw new FatalProtocolException(string.Format(CultureInfo.CurrentCulture,
                                                                   Strings.Protocol_PackageMetadataError,
                                                                   packageId,
                                                                   _localResource.Root),
                                                     ex);
                }
            }));
        }
        private static List <VersionInfo> GetVersions(
            FindLocalPackagesResource localResource,
            LocalPackageInfo package,
            SearchFilter filter,
            ILogger log,
            CancellationToken token)
        {
            token.ThrowIfCancellationRequested();

            // apply the filters to the version list returned
            var versions = localResource.FindPackagesById(package.Identity.Id, log, token)
                           .Where(v => filter.IncludePrerelease || !v.Identity.Version.IsPrerelease)
                           .Select(p => new VersionInfo(p.Identity.Version, downloadCount: 0))
                           .OrderByDescending(v => v.Version, VersionComparer.Default)
                           .ToList();

            // Add in the current package if it does not already exist
            if (!versions.Any(v => v.Version == package.Identity.Version))
            {
                var packageVersionInfo = new VersionInfo(package.Identity.Version, downloadCount: 0)
                {
                    PackageSearchMetadata = new LocalPackageSearchMetadata(package)
                };

                versions.Add(packageVersionInfo);
            }

            return(versions);
        }
Пример #3
0
        protected async Task <IEnumerable <NuGetVersion> > GetPackageVersionsFromLocalPackageRepository(
            string packageId,
            string versionPrefix,
            bool includePrerelease,
            ILogger log,
            CancellationToken token)
        {
            token.ThrowIfCancellationRequested();

            return(await Task.Run(() =>
            {
                var packages = _localResource.FindPackagesById(packageId, log, token);

                if (!includePrerelease)
                {
                    packages = packages.Where(p => !p.Identity.Version.IsPrerelease);
                }

                // Check both the non-normalized and full string versions
                return packages.Where(p => p.Identity.Version.ToString()
                                      .StartsWith(versionPrefix, StringComparison.OrdinalIgnoreCase) ||
                                      p.Identity.Version.ToFullString().StartsWith(versionPrefix, StringComparison.OrdinalIgnoreCase))
                .Select(p => p.Identity.Version)
                .ToList();
            },
                                  token));
        }
        /// <summary>
        /// Retrieve dependency info for a single package.
        /// </summary>
        /// <param name="packageId">package id</param>
        /// <param name="projectFramework">project target framework. This is used for finding the dependency group</param>
        /// <param name="token">cancellation token</param>
        public override Task <IEnumerable <SourcePackageDependencyInfo> > ResolvePackages(
            string packageId,
            NuGetFramework projectFramework,
            SourceCacheContext sourceCacheContext,
            ILogger log,
            CancellationToken token)
        {
            if (packageId == null)
            {
                throw new ArgumentNullException(nameof(packageId));
            }

            if (projectFramework == null)
            {
                throw new ArgumentNullException(nameof(projectFramework));
            }

            var results = new List <SourcePackageDependencyInfo>();

            try
            {
                // Retrieve all packages
                foreach (var package in _localResource.FindPackagesById(packageId, log, token))
                {
                    // Convert to dependency info type
                    results.Add(CreateDependencyInfo(package, projectFramework));
                }
            }
            catch (NuGetProtocolException)
            {
                throw;
            }
            catch (Exception ex)
            {
                // Wrap exceptions coming from the server with a user friendly message
                var error = string.Format(
                    CultureInfo.CurrentUICulture,
                    Strings.Protocol_PackageMetadataError,
                    packageId,
                    _localResource.Root);

                throw new FatalProtocolException(error, ex);
            }

            return(Task.FromResult <IEnumerable <SourcePackageDependencyInfo> >(results));
        }
Пример #5
0
        public override Task <IEnumerable <IPackageSearchMetadata> > GetMetadataAsync(
            string packageId,
            bool includePrerelease,
            bool includeUnlisted,
            ILogger log,
            CancellationToken token)
        {
            // All packages are considered listed within a local repo

            return(Task.Run <IEnumerable <IPackageSearchMetadata> >(() =>
            {
                return _localResource.FindPackagesById(packageId, log, token)
                .Where(p => includePrerelease || !p.Identity.Version.IsPrerelease)
                .Select(GetPackageMetadata)
                .ToList();
            },
                                                                    token));
        }