in src/ApiPort/ApiPort/ConsoleApiPort.cs [44:102]
public async Task ListTargetsAsync()
{
const string SelectedMarker = "*";
var targets = await _apiPortClient.GetTargetsAsync();
if (targets.Any())
{
Console.WriteLine();
Console.WriteLine(LocalizedStrings.TargetUsage);
Console.WriteLine();
Console.WriteLine(LocalizedStrings.AvailableTargets);
var expandableTargets = targets.Where(target => target.ExpandedTargets.Any());
var groupedTargets = targets.Where(target => !target.ExpandedTargets.Any()).GroupBy(target => target.Name);
var offsetLength = new[] { LocalizedStrings.TargetsName, LocalizedStrings.TargetsVersion, LocalizedStrings.TargetsDescription }.Max(i => i.Length) + 1;
foreach (var item in groupedTargets)
{
Console.WriteLine();
// Select the latest non-empty target's description
var description = item
.OrderByDescending(i => i.Version)
.FirstOrDefault(i => !string.IsNullOrWhiteSpace(i.Description));
Console.WriteLine(LocalizedStrings.TargetsName.PadRight(offsetLength, ' ') + item.Key);
Console.WriteLine(LocalizedStrings.TargetsVersion.PadRight(offsetLength) + string.Join(LocalizedStrings.VersionListJoin, item.Select(v => v.Version.ToString() + (v.IsSet ? SelectedMarker : string.Empty))));
if (description != null)
{
Console.WriteLine(LocalizedStrings.TargetsDescription.PadRight(offsetLength) + description.Description);
}
}
if (expandableTargets.Any())
{
Console.WriteLine();
Console.WriteLine(LocalizedStrings.AvailableGroupedTargets);
foreach (var item in expandableTargets)
{
Console.WriteLine(LocalizedStrings.TargetsListGrouped, item.Name, string.Join(CultureInfo.CurrentCulture.TextInfo.ListSeparator + " ", item.ExpandedTargets));
}
}
}
if (_targetMapper.Aliases.Any())
{
Console.WriteLine();
Console.WriteLine(LocalizedStrings.AvailableAliases);
foreach (var alias in _targetMapper.Aliases)
{
Console.WriteLine(LocalizedStrings.TargetsListNoVersion, alias);
}
}
}