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

Extra subcommand print (#1058)

Fixes issue #1045

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
This commit is contained in:
Philip Top 2024-07-27 08:05:56 -07:00 committed by GitHub
parent 3afddf3578
commit 7be1740521
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 40 additions and 8 deletions

View File

@ -26,7 +26,7 @@ repos:
- id: debug-statements
- repo: https://github.com/pre-commit/mirrors-clang-format
rev: v18.1.6
rev: v18.1.8
hooks:
- id: clang-format
types_or: [c++, c, cuda]

View File

@ -49,14 +49,17 @@ jobs:
Linux14PC:
vmImage: "ubuntu-latest"
cli11.precompile: ON
macOS20:
vmImage: "macOS-14"
cli11.std: 20
macOS17:
vmImage: "macOS-12"
vmImage: "macOS-13"
cli11.std: 17
macOS11:
vmImage: "macOS-11"
vmImage: "macOS-12"
cli11.std: 11
macOS11PC:
vmImage: "macOS-11"
macOS12PC:
vmImage: "macOS-12"
cli11.std: 11
cli11.precompile: ON
Windows17:

View File

@ -180,11 +180,11 @@ CLI11_INLINE std::string Formatter::make_subcommands(const App *app, AppFormatMo
std::vector<std::string> subcmd_groups_seen;
for(const App *com : subcommands) {
if(com->get_name().empty()) {
if(com->get_group().empty() || com->get_group().front() == '+') {
continue;
}
if(!com->get_group().empty() && com->get_group().front() != '+') {
out << make_expanded(com);
}
continue;
}
std::string group_key = com->get_group();
if(!group_key.empty() &&
std::find_if(subcmd_groups_seen.begin(), subcmd_groups_seen.end(), [&group_key](std::string a) {

View File

@ -273,6 +273,35 @@ TEST_CASE("THelp: HiddenGroup", "[help]") {
CHECK_THAT(help, Contains("another"));
}
// from https://github.com/CLIUtils/CLI11/issues/1045
TEST_CASE("THelp: multiple_group", "[help]") {
CLI::App app{"test_group"};
auto *group1 = app.add_option_group("outGroup");
auto *group2 = app.add_option_group("inGroup");
std::string outFile("");
group1->add_option("--outfile,-o", outFile, "specify the file location of the output")->required();
std::string inFile("");
group2->add_option("--infile,-i", inFile, "specify the file location of the input")->required();
auto help = app.help();
int inCount = 0;
int outCount = 0;
auto iFind = help.find("inGroup");
while(iFind != std::string::npos) {
++inCount;
iFind = help.find("inGroup", iFind + 6);
}
auto oFind = help.find("outGroup");
while(oFind != std::string::npos) {
++outCount;
oFind = help.find("outGroup", oFind + 6);
}
CHECK(inCount == 1);
CHECK(outCount == 1);
}
TEST_CASE("THelp: OptionalPositionalAndOptions", "[help]") {
CLI::App app{"My prog", "AnotherProgram"};
app.add_flag("-q,--quick");