/// <summary> /// Get the view of PowerShell Package. Use for Get-Package command. /// </summary> /// <param name="metadata"></param> /// <param name="versionType"></param> /// <returns></returns> public static List<PowerShellPackage> GetPowerShellPackageView(IEnumerable<JObject> metadata, VersionType versionType) { List<PowerShellPackage> view = new List<PowerShellPackage>(); foreach (JObject json in metadata) { PowerShellPackage package = new PowerShellPackage(); package.Id = json.Value<string>(Properties.PackageId); package.Version = new List<NuGetVersion>(); string version = string.Empty; NuGetVersion nVersion; switch (versionType) { case VersionType.all: JArray versions = json.Value<JArray>(Properties.Versions); if (versions != null && !versions.IsEmpty()) { if (versions.FirstOrDefault().Type == JTokenType.Object) { package.Version = versions.Select(j => NuGetVersion.Parse((string)j["version"])) .OrderByDescending(v => v) .ToList(); } if (versions.FirstOrDefault().Type == JTokenType.String) { package.Version = versions.Select(j => (NuGetVersion.Parse((string)j))) .OrderByDescending(v => v) .ToList(); } } else { version = json.Value<string>(Properties.Version); nVersion = NuGetVersion.Parse(version); package.Version.Add(nVersion); } break; case VersionType.latest: version = json.Value<string>(Properties.LatestVersion); nVersion = NuGetVersion.Parse(version); package.Version.Add(nVersion); break; case VersionType.single: version = json.Value<string>(Properties.Version); nVersion = NuGetVersion.Parse(version); package.Version.Add(nVersion); break; } package.Description = json.Value<string>(Properties.Description); if (string.IsNullOrEmpty(package.Description)) { package.Description = json.Value<string>(Properties.Summary); } view.Add(package); } return view; }