protected override void ProcessRecordCore()
        {
            // Since this is used for intellisense, we need to limit the number of packages that we return. Otherwise,
            // typing InstallPackage TAB would download the entire feed.
            First = MaxReturnedPackages;
            Preprocess();

            List <JObject> packagesToDisplay = new List <JObject>();

            if (!string.IsNullOrEmpty(Version))
            {
                JObject searchResult = PowerShellPackage.GetPackageByIdAndVersion(ActiveSourceRepository, Id, Version, IncludePrerelease.IsPresent);
                packagesToDisplay.Add(searchResult);
                WritePackages(packagesToDisplay, VersionType.single);
            }
            else
            {
                if (Id == null)
                {
                    Id = string.Empty;
                }

                packagesToDisplay = GetPackagesFromRemoteSource(Id, Enumerable.Empty <FrameworkName>(), IncludePrerelease.IsPresent, Skip, First).ToList();
                if (ExactMatch.IsPresent)
                {
                    packagesToDisplay = packagesToDisplay.Where(p => string.Equals(p.Value <string>(Properties.PackageId), Id, StringComparison.OrdinalIgnoreCase)).ToList();
                }

                if (ListAll.IsPresent)
                {
                    WritePackages(packagesToDisplay, VersionType.all);
                }
                else
                {
                    WritePackages(packagesToDisplay, VersionType.latest);
                }
            }
        }
Ejemplo n.º 2
0
        protected override void ProcessRecordCore()
        {
            Preprocess();

            JObject package = null;

            try
            {
                if (Version == null || string.IsNullOrEmpty(Version.ToString()))
                {
                    string latestVersion = PowerShellPackage.GetLastestVersionForPackage(ActiveSourceRepository, Id, Enumerable.Empty <FrameworkName>(), true);
                    Version = new SemanticVersion(latestVersion);
                }
                package = PowerShellPackage.GetPackageByIdAndVersion(ActiveSourceRepository, Id, Version.ToString(), true);
            }
            catch (InvalidOperationException) { }

            if (package != null)
            {
                Uri targetUrl;
                if (License.IsPresent)
                {
                    targetUrl = GetUri(package, Properties.LicenseUrl);
                }
                else if (ReportAbuse.IsPresent)
                {
                    // TODO: ReportAbuseUrl is not exposed in the package registration.
                    //targetUrl = GetUri(package, Properties.ReportAbuseUrl);
                    targetUrl = null;
                }
                else
                {
                    targetUrl = GetUri(package, Properties.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 (Version == null)
                {
                    WriteError(String.Format(CultureInfo.CurrentCulture, Resources.Cmdlet_PackageIdNotFound, Id));
                }
                else
                {
                    WriteError(String.Format(CultureInfo.CurrentCulture, Resources.Cmdlet_PackageIdAndVersionNotFound, Id, Version));
                }
            }
        }