mirror of
https://github.com/KeqingMoe/argparse.git
synced 2025-07-03 22:54:39 +00:00
Closes #113, add custom std::ostream& argument to ArgumentParser constructor
This commit is contained in:
parent
7a3e0f1cb3
commit
281f1ab017
@ -1361,14 +1361,15 @@ public:
|
|||||||
explicit ArgumentParser(std::string program_name = {},
|
explicit ArgumentParser(std::string program_name = {},
|
||||||
std::string version = "1.0",
|
std::string version = "1.0",
|
||||||
default_arguments add_args = default_arguments::all,
|
default_arguments add_args = default_arguments::all,
|
||||||
bool exit_on_default_arguments = true)
|
bool exit_on_default_arguments = true,
|
||||||
|
std::ostream &os = std::cout)
|
||||||
: m_program_name(std::move(program_name)), m_version(std::move(version)),
|
: m_program_name(std::move(program_name)), m_version(std::move(version)),
|
||||||
m_exit_on_default_arguments(exit_on_default_arguments),
|
m_exit_on_default_arguments(exit_on_default_arguments),
|
||||||
m_parser_path(m_program_name) {
|
m_parser_path(m_program_name) {
|
||||||
if ((add_args & default_arguments::help) == default_arguments::help) {
|
if ((add_args & default_arguments::help) == default_arguments::help) {
|
||||||
add_argument("-h", "--help")
|
add_argument("-h", "--help")
|
||||||
.action([&](const auto & /*unused*/) {
|
.action([&](const auto & /*unused*/) {
|
||||||
std::cout << help().str();
|
os << help().str();
|
||||||
if (m_exit_on_default_arguments) {
|
if (m_exit_on_default_arguments) {
|
||||||
std::exit(0);
|
std::exit(0);
|
||||||
}
|
}
|
||||||
@ -1381,7 +1382,7 @@ public:
|
|||||||
if ((add_args & default_arguments::version) == default_arguments::version) {
|
if ((add_args & default_arguments::version) == default_arguments::version) {
|
||||||
add_argument("-v", "--version")
|
add_argument("-v", "--version")
|
||||||
.action([&](const auto & /*unused*/) {
|
.action([&](const auto & /*unused*/) {
|
||||||
std::cout << m_version << std::endl;
|
os << m_version << std::endl;
|
||||||
if (m_exit_on_default_arguments) {
|
if (m_exit_on_default_arguments) {
|
||||||
std::exit(0);
|
std::exit(0);
|
||||||
}
|
}
|
||||||
|
@ -49,6 +49,7 @@ file(GLOB ARGPARSE_TEST_SOURCES
|
|||||||
test_repr.cpp
|
test_repr.cpp
|
||||||
test_required_arguments.cpp
|
test_required_arguments.cpp
|
||||||
test_scan.cpp
|
test_scan.cpp
|
||||||
|
test_stringstream.cpp
|
||||||
test_value_semantics.cpp
|
test_value_semantics.cpp
|
||||||
test_version.cpp
|
test_version.cpp
|
||||||
test_subparsers.cpp
|
test_subparsers.cpp
|
||||||
|
@ -35,7 +35,8 @@ TEST_CASE("Missing optional argument name" * test_suite("error_reporting")) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_CASE("Missing optional argument name (some flag arguments)" * test_suite("error_reporting")) {
|
TEST_CASE("Missing optional argument name (some flag arguments)" *
|
||||||
|
test_suite("error_reporting")) {
|
||||||
argparse::ArgumentParser parser("test");
|
argparse::ArgumentParser parser("test");
|
||||||
parser.add_argument("-a").flag();
|
parser.add_argument("-a").flag();
|
||||||
parser.add_argument("-b").flag();
|
parser.add_argument("-b").flag();
|
||||||
|
20
test/test_stringstream.cpp
Normal file
20
test/test_stringstream.cpp
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
#ifdef WITH_MODULE
|
||||||
|
import argparse;
|
||||||
|
#else
|
||||||
|
#include <argparse/argparse.hpp>
|
||||||
|
#endif
|
||||||
|
#include <doctest.hpp>
|
||||||
|
|
||||||
|
#include <cmath>
|
||||||
|
#include <string>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
using doctest::test_suite;
|
||||||
|
|
||||||
|
TEST_CASE("Get Version String" * test_suite("stringstream")) {
|
||||||
|
std::stringstream os;
|
||||||
|
argparse::ArgumentParser program("test", "1.0",
|
||||||
|
argparse::default_arguments::all, false, os);
|
||||||
|
program.parse_args({"test", "--version"});
|
||||||
|
REQUIRE(os.str() == "1.0\n");
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user