Commit c10bece4955d6122e0ce6d34d57c3729d99cd8a1

Authored by Henry Fredrick Schreiner
1 parent 9c55fa28

Making app pointer optional

include/CLI.hpp
@@ -596,9 +596,16 @@ protected: @@ -596,9 +596,16 @@ protected:
596 std::function<void(App*)> app_callback; 596 std::function<void(App*)> app_callback;
597 597
598 public: 598 public:
599 -  
600 - void set_callback(std::function<void(App*)> callback) { 599 + /// Set a callback to run at the end of parsing
  600 + App* set_callback(std::function<void(App*)> callback) {
601 app_callback = callback; 601 app_callback = callback;
  602 + return this;
  603 + }
  604 +
  605 + /// Don't have to worry about explicit App* in argument
  606 + App* set_callback(std::function<void()> callback) {
  607 + app_callback = [callback](App*){callback();};
  608 + return this;
602 } 609 }
603 610
604 void run_callback() { 611 void run_callback() {
tests/CLITest.cpp
@@ -338,10 +338,9 @@ TEST_F(TApp, Callbacks) { @@ -338,10 +338,9 @@ TEST_F(TApp, Callbacks) {
338 }); 338 });
339 auto sub2 = app.add_subcommand("sub2"); 339 auto sub2 = app.add_subcommand("sub2");
340 bool val = false; 340 bool val = false;
341 - sub2->set_callback([&val](CLI::App*){ 341 + sub2->set_callback([&val](){
342 val = true; 342 val = true;
343 }); 343 });
344 -  
345 344
346 app.reset(); 345 app.reset();
347 args = {"sub2"}; 346 args = {"sub2"};