diff --git a/include/argparse/argparse.hpp b/include/argparse/argparse.hpp index 7ba3fca..00d4ad7 100644 --- a/include/argparse/argparse.hpp +++ b/include/argparse/argparse.hpp @@ -816,18 +816,18 @@ public: } } - std::string get_names_csv() const { + std::string get_names_csv(char separator = ',') const { return std::accumulate( m_names.begin(), m_names.end(), std::string{""}, - [](const std::string &result, const std::string &name) { - return result.empty() ? name : result + ',' + name; + [&](const std::string &result, const std::string &name) { + return result.empty() ? name : result + separator + name; }); } std::string get_usage_full() const { std::stringstream usage; - usage << get_names_csv(); + usage << get_names_csv('/'); const std::string metavar = !m_metavar.empty() ? m_metavar : "VAR"; if (m_num_args_range.get_max() > 0) { usage << " " << metavar; diff --git a/include/argparse/main.cpp b/include/argparse/main.cpp index 34ccd4f..dda3453 100644 --- a/include/argparse/main.cpp +++ b/include/argparse/main.cpp @@ -2,7 +2,7 @@ int main(int argc, char* argv[]) { argparse::ArgumentParser program; - program.add_argument("-a").required(); - program.add_argument("-b", "--bro").required(); + program.add_argument("-a", "--number-of-apples"); + program.add_argument("-b", "--bro"); program.parse_args(argc, argv); } \ No newline at end of file diff --git a/include/argparse/test b/include/argparse/test index ec9e543..0844ee1 100755 Binary files a/include/argparse/test and b/include/argparse/test differ diff --git a/test/test_error_reporting.cpp b/test/test_error_reporting.cpp index 5c1b022..302c47e 100644 --- a/test/test_error_reporting.cpp +++ b/test/test_error_reporting.cpp @@ -35,6 +35,20 @@ TEST_CASE("Missing optional argument name" * test_suite("error_reporting")) { } } +TEST_CASE("Missing optional argument name (multiple names)" * + test_suite("error_reporting")) { + argparse::ArgumentParser parser("test"); + parser.add_argument("-a", "--number-of-apples"); + parser.add_argument("-b"); + + SUBCASE("Bad case 2") { + REQUIRE_THROWS_WITH_AS(parser.parse_args({"test", "1", "2"}), + "Zero positional arguments expected, did you mean " + "-a/--number-of-apples VAR", + std::runtime_error); + } +} + TEST_CASE("Missing optional argument name with other positional arguments" * test_suite("error_reporting")) { argparse::ArgumentParser parser("test");