diff --git a/README.md b/README.md index bfe99dc..a0cf744 100644 --- a/README.md +++ b/README.md @@ -3,61 +3,70 @@ ## Positional Arguments ```cpp -#include +argparse::ArgumentParser program("main"); -int main(int argc, char *argv[]) { - argparse::ArgumentParser program("main"); - - program.add_argument("input"); - program.add_argument("output"); - - program.parse(argc, argv); - std::string input = program.get("input"); - std::string output = program.get("output"); - - return 0; -} +program.add_argument("input"); +program.add_argument("output"); + +program.parse_args({"./main", "rocket.msh", "thrust_profile.csv"}); + +std::string input = program.get("input"); // "rocket.msh" +std::string output = program.get("output"); // "thrust_profile.csv" ``` ## Optional Arguments ```cpp -#include +argparse::ArgumentParser program("main"); -int main(int argc, char *argv[]) { - argparse::ArgumentParser program("main"); - - program.add_argument("--config") - .help("configuration file") - .default_value(std::string("config.yml")); - - program.add_argument("-n", "--num_iterations") - .help("The list of input files") - .action([](const std::string& value) { return std::stoi(value); }); - - program.parse(argc, argv); - std::string config = program.get("--config"); - int num_iterations = program.get("-n"); - - return 0; -} +program.add_argument("--config") + .help("configuration file") + .default_value(std::string("config.json")); + +program.add_argument("-n", "--num_iterations") + .help("The list of input files") + .action([](const std::string& value) { return std::stoi(value); }); + +program.parse_args({"./main", "-n", "36"}); + +std::string config = program.get("--config"); // config.json +int num_iterations = program.get("-n"); // 36 ``` -## List of Arguments +## Vector of Arguments ```cpp -#include +argparse::ArgumentParser program("main"); -int main(int argc, char *argv[]) { - argparse::ArgumentParser program("main"); - - program.add_argument("--input_files") - .help("The list of input files") - .nargs(3); - - program.parse(argc, argv); - std::vector files = program.get>("--input_files"); - - return 0; -} +program.add_argument("--input_files") + .help("The list of input files") + .nargs(3); + +program.parse_args({"./main", "--input_files", "config.yml", "System.xml"}); + +auto files = program.get>("--input_files"); // {"config.yml", "System.xml"} +``` + +## Compound Toggle Arguments + +```cpp +argparse::ArgumentParser program("test"); + +program.add_argument("-a") + .default_value(false) + .implicit_value(true); + +program.add_argument("-b") + .default_value(false) + .implicit_value(true); + +program.add_argument("-c") + .nargs(2) + .action([](const std::string& value) { return std::stof(value); }); + +program.parse_args({ "./main", "-abc", "3.14", "2.718" }); + +auto a = program.get("-a"); // true +auto b = program.get("-b"); // true +auto c = program.get>("-c"); // {3.14f, 2.718f} ```