public void PrintHelp(IEnumerable <string> actionRouteParts) { var help = _helpGenerator.CreateHelp(actionRouteParts); _sysConsole .WriteLine() .WriteLine(help.HelpText) .WriteLine() .WriteLine("Syntax:") .WriteLine($" {help.Syntax}"); PrintHelpEntries(help.OptionsHelp.ValueHelpEntries, "Arguments:"); PrintHelpEntries(help.OptionsHelp.ParameterHelpEntries, "Options:"); _sysConsole.WriteLine(); }
public static TItem?SelectItem <TItem>(this ISysConsole sysConsole, IEnumerable <TItem> items, Func <TItem, string?> getCaption, TItem?defaultItem) { var selectionList = items .SelectWithIndex() .Select(x => new { Number = x.Index + 1, Text = getCaption(x.Data), Item = x.Data }) .ToArray(); selectionList.ForEach(x => sysConsole.WriteLine($"[{x.Number}]: {x.Text}")); var selection = sysConsole.ReadLine(); if (!int.TryParse(selection, out var selectionNumber)) { throw new InvalidOperationException(); } var selectedItem = selectionList.FirstOrDefault(x => x.Number == selectionNumber); return(selectedItem is null ? defaultItem : selectedItem.Item); }