diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 72a5f55b..c2eef50c 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -20,5 +20,6 @@ add_cli_exe(groups groups.cpp) add_cli_exe(inter_argument_order inter_argument_order.cpp) add_cli_exe(prefix_command prefix_command.cpp) add_cli_exe(enum enum.cpp) +add_cli_exe(modhelp modhelp.cpp) add_subdirectory(subcom_in_files) diff --git a/examples/modhelp.cpp b/examples/modhelp.cpp new file mode 100644 index 00000000..d6d957d7 --- /dev/null +++ b/examples/modhelp.cpp @@ -0,0 +1,31 @@ +// Modify the help print so that argument values are accessible +// Note that this will not shortcut `->required` and other similar options + +#include "CLI/CLI.hpp" + +#include + +int main(int argc, char **argv) { + CLI::App test; + + // Remove help flag because it shortcuts all processing + test.set_help_flag(); + + // Add custom flag that activates help + auto help = test.add_flag("-h,--help", "Request help"); + + std::string some_option; + test.add_option("-a", some_option, "Some description"); + + try { + test.parse(argc, argv); + if(*help) + throw CLI::CallForHelp(); + } catch (const CLI::Error &e) { + std::cout << "Option string:" << some_option << std::endl; + return test.exit(e); + } + + std::cout << "Option string:" << some_option << std::endl; + return 0; +}