/// <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; }
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); } } } } }
/// <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); }
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)); } } }