commandline icon indicating copy to clipboard operation
commandline copied to clipboard

Generate Help on a specific verb

Open sybaris opened this issue 2 years ago • 4 comments

Describe the bug When I call my program with the following arguments : "help verb1", I expect that the help for this specific verb was displayed. But instead, the help for all verbs are displayed.

To Reproduce

    [Verb("Verb1", HelpText ="Help Verb1")]
    internal class Verb1
    {
        [Option(Required = true, HelpText = "Help MyOption1")]
        public string MyOption1 { get; set; }
    }

    [Verb("Verb2",HelpText = "Help Verb2")]
    internal class Verb2
    {
        [Option(Required = true, HelpText = "Help MyOption2")]
        public string MyOption2 { get; set; }
    }

    internal class Program
    {
        static void Main(string[] args)
        {
            var parser = new Parser(config => config.HelpWriter = null);
            var parserResult = parser.ParseArguments<
                Verb1,
                Verb2
            >
            (args);

            parserResult.MapResult(
                 (Verb1 options) => { return 0; },
                 (Verb2 options) => { return 0; },
                 errors => {
                     DisplayHelp(parserResult, errors);
                     return 0;
                 });

            Console.ReadKey();
        }

        static void DisplayHelp<T>(ParserResult<T> result, IEnumerable<Error> errs)
        {
            var helpText = HelpText.AutoBuild(result, h =>
            {
                h.AdditionalNewLineAfterOption = false;
                h.Heading = "Myapp 2.0.0-beta"; //change header
                h.Copyright = "Copyright (c) 2019 Global.com"; //change copyright text
                return HelpText.DefaultParsingErrorsHandler(result, h);
            }, e => e, verbsIndex:true);
            Console.WriteLine(helpText);
        }
    }

When I excecute this with the command line "MyApp.exe help verb1" The actual result is : image

Expected behavior This display : Verb2 Help Verb1 MyOption2 Help MyOption2

sybaris avatar Sep 18 '23 12:09 sybaris

Verbs are case sensitive. It looks like you're using verb1 on the command line, but the program expects Verb1.

gfs avatar Sep 18 '23 21:09 gfs

Hi @gfs Thanks for your answer. But I have the same behavior when I use the correct case Verb1 And also when I have config.CaseSensitive = false; , I have the same behavior...

sybaris avatar Sep 20 '23 06:09 sybaris

@sybaris

Try removing this part , e => e, verbsIndex:true.

Image

gfs avatar Oct 09 '23 20:10 gfs

Hi, Exact. Thanks for you answer.

Note that I have this code because it's a copy paste of wiki

Regards Sybaris

sybaris avatar Oct 10 '23 07:10 sybaris