예제 #1
0
        void PrintHelp(string executableName)
        {
            Console.WriteLine($"Usage: {executableName} <command> [<args>]");
            Console.WriteLine();
            Console.WriteLine("Available commands are:");

            var printedGroups = new HashSet <string>(StringComparer.OrdinalIgnoreCase);

            foreach (var avail in _availableCommands.OrderBy(c => c.Metadata.Name))
            {
                if (avail.Metadata.SubCommand != null)
                {
                    if (!printedGroups.Contains(avail.Metadata.Name))
                    {
                        Printing.Define($"  {avail.Metadata.Name}", "<sub-command>", 13, Console.Out);
                        printedGroups.Add(avail.Metadata.Name);
                    }
                }
                else
                {
                    Printing.Define($"  {avail.Metadata.Name}", avail.Metadata.HelpText, 13, Console.Out);
                }
            }

            Console.WriteLine();
            Console.WriteLine($"Type `{executableName} help <command>` for detailed help");
        }
예제 #2
0
        void PrintHelp(string executableName, string topLevelCommand)
        {
            Console.WriteLine($"Usage: {executableName} {topLevelCommand} <sub-command> [<args>]");
            Console.WriteLine();
            Console.WriteLine("Available sub-commands are:");

            foreach (var avail in _availableCommands.Where(c => c.Metadata.Name == topLevelCommand).OrderBy(c => c.Metadata.SubCommand))
            {
                Printing.Define($"  {avail.Metadata.SubCommand}", avail.Metadata.HelpText, 13, Console.Out);
            }

            Console.WriteLine();
            Console.WriteLine($"Type `{executableName} help {topLevelCommand} <sub-command>` for detailed help");
        }
예제 #3
0
        void PrintHelp(string executableName)
        {
            Console.WriteLine($"Usage: {executableName} <command> [<args>]");
            Console.WriteLine();
            Console.WriteLine("Available commands are:");

            foreach (var availableCommand in _availableCommands)
            {
                Printing.Define(
                    "  " + availableCommand.Metadata.Name,
                    availableCommand.Metadata.HelpText,
                    13,
                    Console.Out);
            }

            Console.WriteLine();
            Console.WriteLine($"Type `{executableName} help <command>` for detailed help");
        }
예제 #4
0
        protected override int Run(string[] unrecognised)
        {
            var ea   = Assembly.GetEntryAssembly();
            var name = ea.GetName().Name;

            if (unrecognised.Length > 0)
            {
                var target = unrecognised[0].ToLowerInvariant();
                var cmd    = _availableCommands.SingleOrDefault(c => c.Metadata.Name == target);
                if (cmd != null)
                {
                    var argHelp = cmd.Value.Value.HasArgs ? " [<args>]" : "";
                    Console.WriteLine(name + " " + cmd.Metadata.Name + argHelp);
                    Console.WriteLine();
                    Console.WriteLine(cmd.Metadata.HelpText);
                    Console.WriteLine();

                    cmd.Value.Value.PrintUsage();
                    return(0);
                }

                base.Run(unrecognised);
            }

            Console.WriteLine($"Usage: {name} <command> [<args>]");
            Console.WriteLine();
            Console.WriteLine("Available commands are:");

            foreach (var availableCommand in _availableCommands)
            {
                Printing.Define(
                    "  " + availableCommand.Metadata.Name,
                    availableCommand.Metadata.HelpText,
                    13,
                    Console.Out);
            }

            Console.WriteLine();
            Console.WriteLine($"Type '{name} help <command>' for detailed help.");

            return(0);
        }