mirror of
https://github.com/CLIUtils/CLI11.git
synced 2025-05-02 05:33:53 +00:00
Virtual options list, overridable help flag.
This commit is contained in:
parent
f6b1bc1357
commit
6ed2899741
@ -36,12 +36,13 @@ protected:
|
||||
std::string name;
|
||||
std::string prog_description;
|
||||
std::vector<Option> options;
|
||||
Option* help_flag {nullptr};
|
||||
std::vector<std::string> missing_options;
|
||||
std::deque<std::string> positionals;
|
||||
std::vector<std::unique_ptr<App>> subcommands;
|
||||
bool parsed{false};
|
||||
App* subcommand = nullptr;
|
||||
std::string progname = "program";
|
||||
App* subcommand{nullptr};
|
||||
std::string progname{"program"};
|
||||
|
||||
std::function<void()> app_callback;
|
||||
|
||||
@ -51,9 +52,8 @@ public:
|
||||
/// it is not possible to overload on std::function (fixed in c++14
|
||||
/// and backported to c++11 on newer compilers). Use capture by reference
|
||||
/// to get a pointer to App if needed.
|
||||
App* set_callback(std::function<void()> callback) {
|
||||
void set_callback(std::function<void()> callback) {
|
||||
app_callback = callback;
|
||||
return this;
|
||||
}
|
||||
|
||||
void run_callback() {
|
||||
@ -79,10 +79,15 @@ public:
|
||||
App(std::string prog_description="")
|
||||
: prog_description(prog_description) {
|
||||
|
||||
add_flag("-h,--help", "Print this help message and exit");
|
||||
setup();
|
||||
|
||||
}
|
||||
|
||||
/// Setup help flag. Virtual to allow customization.
|
||||
virtual void setup() {
|
||||
help_flag = add_flag("-h,--help", "Print this help message and exit");
|
||||
}
|
||||
|
||||
App* add_subcommand(std::string name, std::string description="") {
|
||||
subcommands.emplace_back(new App(description));
|
||||
subcommands.back()->name = name;
|
||||
@ -317,7 +322,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
if (count("--help") > 0) {
|
||||
if (help_flag != nullptr && help_flag->count() > 0) {
|
||||
throw CallForHelp();
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user