diff --git a/README.md b/README.md index 2ac64c7..814dc21 100644 --- a/README.md +++ b/README.md @@ -934,6 +934,42 @@ foo@bar:/home/dev/$ ./main fex baz ``` +## Using `option=value` syntax + +```cpp +#include "argparse.hpp" +#include + +int main(int argc, char *argv[]) { + argparse::ArgumentParser program("test"); + program.add_argument("--foo").implicit_value(true).default_value(false); + program.add_argument("--bar"); + + try { + program.parse_args(argc, argv); + } + catch (const std::runtime_error& err) { + std::cerr << err.what() << std::endl; + std::cerr << program; + std::exit(1); + } + + if (program.is_used("--foo")) { + std::cout << "--foo: " << std::boolalpha << program.get("--foo") << "\n"; + } + + if (program.is_used("--bar")) { + std::cout << "--bar: " << program.get("--bar") << "\n"; + } +} +``` + +```console +foo@bar:/home/dev/$ ./test --bar=BAR --foo +--foo: true +--bar: BAR +``` + ## CMake Integration Use the latest argparse in your CMake project without copying any content. diff --git a/include/argparse/test.cpp b/include/argparse/test.cpp deleted file mode 100644 index 8d96354..0000000 --- a/include/argparse/test.cpp +++ /dev/null @@ -1,15 +0,0 @@ -#include "argparse.hpp" -#include - -int main(int argc, char *argv[]) { - argparse::ArgumentParser program("test"); - program.add_argument("--foo").implicit_value(true).default_value(false); - program.add_argument("bar"); - - auto unknown_args = - program.parse_known_args({"test", "--foo", "--badger", "BAR", "spam"}); - - assert(program.get("--foo") == true); - assert(program.get("bar") == std::string{"BAR"}); - assert((unknown_args == std::vector{"--badger", "spam"})); -} diff --git a/test/test_equals_form.cpp b/test/test_equals_form.cpp index e09b664..81c31f8 100644 --- a/test/test_equals_form.cpp +++ b/test/test_equals_form.cpp @@ -28,4 +28,12 @@ TEST_CASE("Duplicate =-named and standard" * test_suite("equals_form")) { REQUIRE(result == "value"); std::string result2{parser.get("--long")}; REQUIRE(result2 == "NO_VALUE"); +} + +TEST_CASE("Basic --value=value with nargs(2)" * test_suite("equals_form")) { + argparse::ArgumentParser parser("test"); + parser.add_argument("--long").nargs(2); + parser.parse_args({"test", "--long=value1", "value2"}); + REQUIRE((parser.get>("--long") == + std::vector{"value1", "value2"})); } \ No newline at end of file