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();
        }
Ejemplo n.º 2
0
        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);
        }