Example #1
0
        /// <summary>
        /// Get all versions for a specific package Id.
        /// </summary>
        /// <param name="sourceRepository"></param>
        /// <param name="packageId"></param>
        /// <param name="project"></param>
        /// <param name="includePrerelease"></param>
        /// <returns></returns>
        public static IEnumerable <NuGetVersion> GetAllVersionsForPackageId(SourceRepository sourceRepository, string packageId, NuGetProject project, bool includePrerelease)
        {
            IEnumerable <string> targetFrameworks = GetProjectTargetFrameworks(project);
            SearchFilter         searchfilter     = new SearchFilter();

            searchfilter.IncludePrerelease   = includePrerelease;
            searchfilter.SupportedFrameworks = targetFrameworks;
            searchfilter.IncludeDelisted     = false;
            PSSearchResource           resource    = sourceRepository.GetResource <PSSearchResource>();
            PSSearchMetadata           result      = null;
            IEnumerable <NuGetVersion> allVersions = Enumerable.Empty <NuGetVersion>();

            try
            {
                Task <IEnumerable <PSSearchMetadata> > task = resource.Search(packageId, searchfilter, 0, 30, CancellationToken.None);
                result = task.Result
                         .Where(p => string.Equals(p.Identity.Id, packageId, StringComparison.OrdinalIgnoreCase))
                         .FirstOrDefault();
                allVersions = result.Versions;
            }
            catch (Exception)
            {
                if (result == null || !allVersions.Any())
                {
                    throw new InvalidOperationException(
                              String.Format(CultureInfo.CurrentCulture,
                                            Resources.UnknownPackage, packageId));
                }
            }
            return(result.Versions);
        }
Example #2
0
        /// <summary>
        /// Get list of package updates that are installed to a project. Used for Get-Package -Updates.
        /// </summary>
        /// <param name="installedPackages"></param>
        /// <param name="targetFrameworks"></param>
        /// <param name="includePrerelease"></param>
        /// <param name="skip"></param>
        /// <param name="take"></param>
        /// <returns></returns>
        protected Dictionary <PSSearchMetadata, NuGetVersion> GetPackageUpdatesFromRemoteSource(IEnumerable <PackageReference> installedPackages,
                                                                                                IEnumerable <string> targetFrameworks, bool includePrerelease, int skip = 0, int take = 30)
        {
            Dictionary <PSSearchMetadata, NuGetVersion> updates = new Dictionary <PSSearchMetadata, NuGetVersion>();

            foreach (PackageReference package in installedPackages)
            {
                PSSearchMetadata metadata = GetPackagesFromRemoteSource(package.PackageIdentity.Id, targetFrameworks, includePrerelease, skip, take)
                                            .Where(p => string.Equals(p.Identity.Id, package.PackageIdentity.Id, StringComparison.OrdinalIgnoreCase)).FirstOrDefault();
                updates.Add(metadata, package.PackageIdentity.Version);
            }

            return(updates);
        }
Example #3
0
        /// <summary>
        /// Get the view of PowerShellPackage. Used for Get-Package -Updates command.
        /// </summary>
        /// <param name="data"></param>
        /// <param name="version"></param>
        /// <param name="versionType"></param>
        /// <returns></returns>
        internal static PowerShellUpdatePackage GetPowerShellPackageUpdateView(PSSearchMetadata data, NuGetVersion version, VersionType versionType, NuGetProject project)
        {
            PowerShellUpdatePackage package = new PowerShellUpdatePackage();

            package.Id          = data.Identity.Id;
            package.Description = data.Summary;
            package.ProjectName = project.GetMetadata <string>(NuGetProjectMetadataKeys.Name);
            switch (versionType)
            {
            case VersionType.updates:
            {
                package.Versions = data.Versions.Where(p => p > version).OrderByDescending(v => v);
                if (package.Versions != null && package.Versions.Any())
                {
                    LegacyNuGet.SemanticVersion sVersion;
                    LegacyNuGet.SemanticVersion.TryParse(package.Versions.FirstOrDefault().ToNormalizedString(), out sVersion);
                    package.Version = sVersion;
                }
            }
            break;

            case VersionType.latest:
            {
                NuGetVersion nVersion = data.Versions.Where(p => p > version).OrderByDescending(v => v).FirstOrDefault();
                if (nVersion != null)
                {
                    package.Versions = new List <NuGetVersion>()
                    {
                        nVersion
                    };
                    LegacyNuGet.SemanticVersion sVersion;
                    LegacyNuGet.SemanticVersion.TryParse(nVersion.ToNormalizedString(), out sVersion);
                    package.Version = sVersion;
                }
            }
            break;
            }

            return(package);
        }