Commit c10bece4955d6122e0ce6d34d57c3729d99cd8a1

Authored by Henry Fredrick Schreiner
1 parent 9c55fa28

Making app pointer optional

include/CLI.hpp
... ... @@ -596,9 +596,16 @@ protected:
596 596 std::function<void(App*)> app_callback;
597 597  
598 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 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 611 void run_callback() {
... ...
tests/CLITest.cpp
... ... @@ -338,10 +338,9 @@ TEST_F(TApp, Callbacks) {
338 338 });
339 339 auto sub2 = app.add_subcommand("sub2");
340 340 bool val = false;
341   - sub2->set_callback([&val](CLI::App*){
  341 + sub2->set_callback([&val](){
342 342 val = true;
343 343 });
344   -
345 344  
346 345 app.reset();
347 346 args = {"sub2"};
... ...