Ejemplo n.º 1
0
        /// <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;
        }