1
0
mirror of https://github.com/CLIUtils/CLI11.git synced 2025-05-05 06:33:52 +00:00

Better support for subcommand help

This commit is contained in:
Henry Fredrick Schreiner 2017-02-04 14:37:49 -05:00
parent 34b92f6894
commit c028ca298d

View File

@ -573,7 +573,7 @@ public:
/// The first half of the help print, name plus default, etc /// The first half of the help print, name plus default, etc
std::string help_name() const { std::string help_name() const {
std::stringstream out; std::stringstream out;
out << get_name(); out << get_name();
if(expected() != 0) { if(expected() != 0) {
if(typeval != "") if(typeval != "")
out << " " << typeval; out << " " << typeval;
@ -1170,8 +1170,8 @@ public:
for(std::unique_ptr<App> &com : subcommands) { for(std::unique_ptr<App> &com : subcommands) {
if(com->name == args.back()){ if(com->name == args.back()){
args.pop_back(); args.pop_back();
com->parse(args);
subcommand = com.get(); subcommand = com.get();
com->parse(args);
return; return;
} }
} }
@ -1313,12 +1313,19 @@ public:
throw OptionNotFound(name); throw OptionNotFound(name);
} }
std::string help(size_t wid=30) const { std::string help(size_t wid=30, std::string prev="") const {
// Delegate to subcommand if needed
if(prev == "")
prev = progname;
else
prev += " " + name;
if(subcommand != nullptr)
return subcommand->help(wid, prev);
std::stringstream out; std::stringstream out;
if(name != "")
out << "Subcommand: " << name << " ";
out << prog_discription << std::endl; out << prog_discription << std::endl;
out << "Usage: " << progname; out << "Usage: " << prev;
// Check for options // Check for options
bool npos = false; bool npos = false;