command-line-api icon indicating copy to clipboard operation
command-line-api copied to clipboard

Make the help customiztaion "easier"

Open zgabi opened this issue 4 months ago • 1 comments

The documentation (https://learn.microsoft.com/en-us/dotnet/standard/commandline/how-to-customize-help) shows that when the user wants to customize the help he needs to write a lot of unnecessary code. Create a class which in inherited from SynchronousCommandLineAction / AsynchronousCommandLineAction, find the HelpOption, etc...

I'd suggest you to simplify this.

For example:

  • the AnonymousSynchronousCommandLineAction / AnonymousAsynchronousCommandLineAction classes (which are used in the SetAction methods) could be public. So the user can write this:
                defaultHelpOption.Action = new AnonymousSynchronousCommandLineAction(parseResult =>
                {
                    Console.WriteLine("HEADER");
                    return oldAction.Invoke(parseResult);
                });

  • or replace the XXCommandLineAction classes with just simple delegates:
    public delegate int SynchronousCommandLineAction(ParseResult parseResult);
    public delegate Task<int> AsynchronousCommandLineAction(ParseResult parseResult, CancellationToken cancellationToken);

  • add helper methods to the root command which returns the Help and VersionOptions

zgabi avatar Aug 19 '25 13:08 zgabi

Related: #2588

jonsequitur avatar Oct 09 '25 20:10 jonsequitur