A simple header only command line argument parser
Master | Develop |
---|---|
git clone https://github.com/jamolnng/argparse.git
cd argparse
mkdir build && cd build
cmake ..
make
VSCode and CMake Tools extension
TODO
TODO
#include "argparse.h"
#include <iostream>
#include <iterator>
using namespace argparse;
int main(int argc, const char* argv[]) {
ArgumentParser parser("Argument parser example");
parser.add_argument()
.names({"-v", "--verbose"})
.description("verbose level")
.required(true);
parser.enable_help();
auto err = parser.parse(argc, argv);
if (err) {
std::cout << err << std::endl;
return -1;
}
if (parser.exists("help")) {
parser.print_help();
return 0;
}
if (parser.exists("v")) {
switch (parser.get<unsigned int>("v")) {
case 2:
std::cout << "an even more verbose string" << std::endl;
// fall through
case 1:
std::cout << "a verbose string" << std::endl;
// fall through
default:
std::cout << "some verbosity" << std::endl;
}
}
}
Example output:
> program -v 2
an even more verbose string
a verbose string
some verbosity
> program -v=1
a verbose string
some verbosity
> program --verbose
some verbosity
> program -h
Usage: program [options]
Options:
-v, --verbose verbose level (Required)
-h, --help Shows this page
> program
Required argument not found: -v
TODO
- Positional argumeents
- More error checking
- Think of more things to do
make test
TODO
TODO
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
Please make sure to update tests as appropriate.