diff --git a/include/CLI.hpp b/include/CLI.hpp index e6fd5b00..1b83c604 100644 --- a/include/CLI.hpp +++ b/include/CLI.hpp @@ -596,9 +596,16 @@ protected: std::function app_callback; public: - - void set_callback(std::function callback) { + /// Set a callback to run at the end of parsing + App* set_callback(std::function callback) { app_callback = callback; + return this; + } + + /// Don't have to worry about explicit App* in argument + App* set_callback(std::function callback) { + app_callback = [callback](App*){callback();}; + return this; } void run_callback() { diff --git a/tests/CLITest.cpp b/tests/CLITest.cpp index 1022a388..04364045 100644 --- a/tests/CLITest.cpp +++ b/tests/CLITest.cpp @@ -338,10 +338,9 @@ TEST_F(TApp, Callbacks) { }); auto sub2 = app.add_subcommand("sub2"); bool val = false; - sub2->set_callback([&val](CLI::App*){ + sub2->set_callback([&val](){ val = true; }); - app.reset(); args = {"sub2"};