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