public string FormatAsTable()
{
var result = new StringBuilder();
if (Channel != null)
{
result.Append($"Channel: '{Channel.Name}'");
if (Channel.IsDefault) result.Append(" (this is the default channel)");
result.AppendLine();
}
if (steps.Length == 0)
{
return result.ToString();
}
var nameColumnWidth = Width("Name", steps.Select(s => s.StepName));
var versionColumnWidth = Width("Version", steps.Select(s => s.Version));
var sourceColumnWidth = Width("Source", steps.Select(s => s.VersionSource));
var rulesColumnWidth = Width("Version rules", steps.Select(s => s.ChannelVersionRuleTestResult?.ToSummaryString()));
var format = " {0,-3} {1,-" + nameColumnWidth + "} {2,-" + versionColumnWidth + "} {3,-" + sourceColumnWidth + "} {4,-" + rulesColumnWidth + "}";
result.AppendFormat(format, "#", "Name", "Version", "Source", "Version rules").AppendLine();
result.AppendFormat(format, "---", new string('-', nameColumnWidth), new string('-', versionColumnWidth), new string('-', sourceColumnWidth), new string('-', rulesColumnWidth)).AppendLine();
for (var i = 0; i < steps.Length; i++)
{
var item = steps[i];
result.AppendFormat(format,
i + 1,
item.StepName,
item.Version ?? "ERROR",
item.VersionSource,
item.ChannelVersionRuleTestResult?.ToSummaryString())
.AppendLine();
}
return result.ToString();
}