public static void SortElasticBeanstalkWindowsPlatforms()

in src/AWS.Deploy.Orchestration/Data/AWSResourceQueryer.cs [726:779]


        public static void SortElasticBeanstalkWindowsPlatforms(List<PlatformSummary> windowsPlatforms)
        {
            var parseYear = (string name) =>
            {
                var tokens = name.Split(' ');
                int year;
                if (int.TryParse(tokens[tokens.Length - 1], out year))
                    return year;
                if (int.TryParse(tokens[tokens.Length - 2], out year))
                    return year;

                return 0;
            };
            var parseOSLevel = (string name) =>
            {
                if (name.Contains("Windows Server Core"))
                    return 1;
                if (name.Contains("Windows Server"))
                    return 2;

                return 10;
            };

            windowsPlatforms.Sort((x, y) =>
            {
                if (!Version.TryParse(x.PlatformVersion, out var xVersion))
                    xVersion = Version.Parse("0.0.0");

                if (!Version.TryParse(y.PlatformVersion, out var yVersion))
                    yVersion = Version.Parse("0.0.0");

                if (yVersion != xVersion)
                {
                    return yVersion.CompareTo(xVersion);
                }

                var xYear = parseYear(x.PlatformBranchName);
                var yYear = parseYear(y.PlatformBranchName);
                var xOSLevel = parseOSLevel(x.PlatformBranchName);
                var yOSLevel = parseOSLevel(y.PlatformBranchName);

                if (yYear == xYear)
                {
                    if (yOSLevel == xOSLevel)
                    {
                        return 0;
                    }

                    return yOSLevel < xOSLevel ? -1 : 1;
                }

                return yYear < xYear ? -1 : 1;
            });
        }