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(Microsoft.Fx.Portability.Resources.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); } } }
public Task<ServiceResponse<IEnumerable<AvailableTarget>>> GetTargetsAsync() { var targets = new[] { new AvailableTarget { Name = "Target1", Version = Version.Parse("1.0"), Description = "Description1" }, new AvailableTarget { Name = "Target1", Version = Version.Parse("2.0"), Description = "Description2" }, new AvailableTarget { Name = "Target1", Version = Version.Parse("3.0"), Description = "Description3" }, new AvailableTarget { Name = "Target2", Version = Version.Parse("1.0"), }, new AvailableTarget { Name = "Target2", Version = Version.Parse("2.0"), }, }; var response = ServiceResponse.Create<IEnumerable<AvailableTarget>>(targets); return Task.FromResult(response); }