cli icon indicating copy to clipboard operation
cli copied to clipboard

Default argument for commands

Open pkbehera opened this issue 11 months ago • 1 comments

 root_menu->Insert(
        "show_updt",
        [&](ostream& out, uint32_t cnt = 1) {
            // do stuff
            //...
        },                                                                
        "Show next x updates");

I tried registering the above handler, expecting the command to use default argument of 1, when no arguments are provided. But it did not work, though it compiled just fine:

demo> help
Commands available:
 - help
        This help message
 - exit
        Quit the session
 - show_updt <unsigned int>
        Show next x updates
demo> show_updt 
wrong command: show_updt
demo> show_updt 2
demo> show_updt 1
demo>

Default arguments if available would be great!

Also, the error message here should better be something like missing command arguments instead of wrong command!

pkbehera avatar Mar 15 '24 19:03 pkbehera

It would be a great feature, indeed.

Unfortunately, C++ templates do not work with default arguments, and cli library is implemented with template functions.

However, if someone in the community has already implemented a successful solution for using default arguments with template functions, please feel free to share a pull request (PR).

daniele77 avatar Mar 26 '24 09:03 daniele77