Exemple #1
0
        /// <summary>
        /// Normalize package Id input against server metadata for project K, which is case-sensitive.
        /// </summary>
        /// <param name="project"></param>
        protected void NormalizePackageId(NuGetProject project)
        {
            if (!(project is ProjectManagement.Projects.ProjectKNuGetProjectBase))
            {
                return;
            }

            var resource = ActiveSourceRepository.GetResource <UIMetadataResource>();

            if (resource == null)
            {
                return;
            }

            var metadata = resource.GetMetadata(
                Id,
                includePrerelease: true,
                includeUnlisted: false,
                token: CancellationToken.None).Result;

            if (!metadata.Any())
            {
                return;
            }

            // note that we're assuming that package id is the same for all versions.
            Id = metadata.First().Identity.Id;
        }
Exemple #2
0
        protected override void ProcessRecordCore()
        {
            Preprocess();

            PSAutoCompleteResource autoCompleteResource = ActiveSourceRepository.GetResource <PSAutoCompleteResource>();
            IEnumerable <string>   packageIds           = Enumerable.Empty <string>();

            try
            {
                Task <IEnumerable <string> > task = autoCompleteResource.IdStartsWith(Id, IncludePrerelease.IsPresent, CancellationToken.None);
                packageIds = task.Result;
            }
            catch (Exception) { }

            if (!ExactMatch.IsPresent)
            {
                List <IPowerShellPackage> packages = new List <IPowerShellPackage>();
                foreach (string id in packageIds)
                {
                    IPowerShellPackage package = GetIPowerShellPackageFromRemoteSource(autoCompleteResource, id);
                    if (package.Versions != null && package.Versions.Any())
                    {
                        packages.Add(package);
                    }
                }
                WriteObject(packages, enumerateCollection: true);
            }
            else
            {
                if (packageIds.Any())
                {
                    string packageId = packageIds.Where(p => string.Equals(p, Id, StringComparison.OrdinalIgnoreCase)).FirstOrDefault();
                    if (!string.IsNullOrEmpty(packageId))
                    {
                        IPowerShellPackage package = GetIPowerShellPackageFromRemoteSource(autoCompleteResource, packageId);
                        if (package.Versions != null && package.Versions.Any())
                        {
                            WriteObject(package);
                        }
                    }
                }
            }
        }
Exemple #3
0
        /// <summary>
        /// Get list of packages from the remote package source. Used for Get-Package -ListAvailable.
        /// </summary>
        /// <param name="packageId"></param>
        /// <param name="targetFrameworks"></param>
        /// <param name="includePrerelease"></param>
        /// <param name="skip"></param>
        /// <param name="take"></param>
        /// <returns></returns>
        protected IEnumerable <PSSearchMetadata> GetPackagesFromRemoteSource(string packageId, IEnumerable <string> targetFrameworks,
                                                                             bool includePrerelease, int skip, int take)
        {
            SearchFilter searchfilter = new SearchFilter();

            searchfilter.IncludePrerelease   = includePrerelease;
            searchfilter.SupportedFrameworks = targetFrameworks;
            searchfilter.IncludeDelisted     = false;

            IEnumerable <PSSearchMetadata> packages = Enumerable.Empty <PSSearchMetadata>();
            PSSearchResource resource = ActiveSourceRepository.GetResource <PSSearchResource>();

            if (resource != null)
            {
                Task <IEnumerable <PSSearchMetadata> > task = resource.Search(packageId, searchfilter, skip, take, CancellationToken.None);
                packages = task.Result;
            }
            return(packages);
        }
Exemple #4
0
        protected override void ProcessRecordCore()
        {
            Preprocess();

            UIPackageMetadata package = null;

            try
            {
                UIMetadataResource resource = ActiveSourceRepository.GetResource <UIMetadataResource>();
                Task <IEnumerable <UIPackageMetadata> > task = resource.GetMetadata(Id, IncludePrerelease.IsPresent, false, CancellationToken.None);
                var metadata = task.Result;
                if (!string.IsNullOrEmpty(Version))
                {
                    NuGetVersion nVersion = PowerShellCmdletsUtility.GetNuGetVersionFromString(Version);
                    metadata = metadata.Where(p => p.Identity.Version == nVersion);
                }
                package = metadata.Where(p => string.Equals(p.Identity.Id, Id, StringComparison.OrdinalIgnoreCase))
                          .OrderByDescending(v => v.Identity.Version)
                          .FirstOrDefault();
            }
            catch (Exception)
            {
            }

            if (package != null)
            {
                Uri targetUrl = null;
                if (License.IsPresent)
                {
                    targetUrl = package.LicenseUrl;
                }
                else if (ReportAbuse.IsPresent)
                {
                    targetUrl = package.ReportAbuseUrl;
                }
                else
                {
                    targetUrl = package.ProjectUrl;
                }

                if (targetUrl != null)
                {
                    OpenUrl(targetUrl);

                    if (PassThru.IsPresent)
                    {
                        WriteObject(targetUrl);
                    }
                }
                else
                {
                    WriteError(String.Format(CultureInfo.CurrentCulture, Resources.Cmdlet_UrlMissing, Id + " " + Version));
                }
            }
            else
            {
                // show appropriate error message depending on whether Version parameter is set.
                if (string.IsNullOrEmpty(Version))
                {
                    WriteError(String.Format(CultureInfo.CurrentCulture, Resources.Cmdlet_PackageIdNotFound, Id));
                }
                else
                {
                    WriteError(String.Format(CultureInfo.CurrentCulture, Resources.Cmdlet_PackageIdAndVersionNotFound, Id, Version));
                }
            }
        }