Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 10 additions & 9 deletions tutorial/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,32 +1,33 @@
cmake_minimum_required(VERSION 3.15)

set(targets
advanced
advanced1
advanced2
basic
complex
complex1
complex2
complex3
conflicting
complex4
conflicting1
count
conflicting2
count1
count2
count3
count4
custom
custom1
custom2
nohandling
custom3
nohandling1
nohandling2
nohandling3
nohelp
optional
optional1
optional2
positional
optional3
positional1
positional3
positional2
# positional3 -- intentionally skipped as it does not compile
positional4
string
types
undesired
Expand Down
12 changes: 7 additions & 5 deletions tutorial/advanced1.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,14 @@ auto main(int argc, char * argv[]) -> int
auto verbosity = parsed.get_value<int>("verbosity");
if (verbosity >= 2)
{
std::cout << "Running '" << argv[0] << "'\n";
std::cout << base << " to the power " << exp << " equals " << answer << '\n';
}
if (verbosity >= 1)
else if (verbosity >= 1)
{
std::cout << base << "^" << exp << " == ";
std::cout << base << "^" << exp << " == " << answer << '\n';
}
else
{
std::cout << answer << '\n';
}

std::cout << answer << '\n';
}
12 changes: 5 additions & 7 deletions tutorial/advanced.cpp → tutorial/advanced2.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,12 @@ auto main(int argc, char * argv[]) -> int
auto verbosity = parsed.get_value<int>("verbosity");
if (verbosity >= 2)
{
std::cout << base << " to the power " << exp << " equals " << answer << '\n';
std::cout << "Running '" << argv[0] << "'\n";
}
else if (verbosity >= 1)
if (verbosity >= 1)
{
std::cout << base << "^" << exp << " == " << answer << '\n';
}
else
{
std::cout << answer << '\n';
std::cout << base << "^" << exp << " == ";
}

std::cout << answer << '\n';
}
9 changes: 2 additions & 7 deletions tutorial/complex1.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,19 +5,14 @@ auto main(int argc, char * argv[]) -> int
{
auto parser = argparse::ArgumentParser();
parser.add_argument("square").help("display a square of a given number").type<int>();
parser.add_argument("-v", "--verbosity").help("increase output verbosity").type<int>();
parser.add_argument("-v", "--verbose").help("increase output verbosity").action(argparse::store_true);
auto parsed = parser.parse_args(argc, argv);
auto value = parsed.get_value<int>("square");
auto answer = value * value;
auto verbosity = parsed.get("verbosity");
if (verbosity && verbosity.get<int>() == 2)
if (parsed.get_value<bool>("verbose"))
{
std::cout << "the square of " << value << " equals " << answer << '\n';
}
else if (verbosity && verbosity.get<int>() == 1)
{
std::cout << value << "^2 == " << answer << '\n';
}
else
{
std::cout << answer << '\n';
Expand Down
2 changes: 1 addition & 1 deletion tutorial/complex2.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ auto main(int argc, char * argv[]) -> int
{
auto parser = argparse::ArgumentParser();
parser.add_argument("square").help("display a square of a given number").type<int>();
parser.add_argument("-v", "--verbosity").help("increase output verbosity").type<int>().choices({0, 1, 2});
parser.add_argument("-v", "--verbosity").help("increase output verbosity").type<int>();
auto parsed = parser.parse_args(argc, argv);
auto value = parsed.get_value<int>("square");
auto answer = value * value;
Expand Down
8 changes: 4 additions & 4 deletions tutorial/complex3.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,16 @@ auto main(int argc, char * argv[]) -> int
{
auto parser = argparse::ArgumentParser();
parser.add_argument("square").help("display a square of a given number").type<int>();
parser.add_argument("-v", "--verbosity").help("increase output verbosity").type<int>().default_(0);
parser.add_argument("-v", "--verbosity").help("increase output verbosity").type<int>().choices({0, 1, 2});
auto parsed = parser.parse_args(argc, argv);
auto value = parsed.get_value<int>("square");
auto answer = value * value;
auto verbosity = parsed.get_value<int>("verbosity");
if (verbosity == 2)
auto verbosity = parsed.get("verbosity");
if (verbosity && verbosity.get<int>() == 2)
{
std::cout << "the square of " << value << " equals " << answer << '\n';
}
else if (verbosity == 1)
else if (verbosity && verbosity.get<int>() == 1)
{
std::cout << value << "^2 == " << answer << '\n';
}
Expand Down
9 changes: 7 additions & 2 deletions tutorial/complex.cpp → tutorial/complex4.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,19 @@ auto main(int argc, char * argv[]) -> int
{
auto parser = argparse::ArgumentParser();
parser.add_argument("square").help("display a square of a given number").type<int>();
parser.add_argument("-v", "--verbose").help("increase output verbosity").action(argparse::store_true);
parser.add_argument("-v", "--verbosity").help("increase output verbosity").type<int>().default_(0);
auto parsed = parser.parse_args(argc, argv);
auto value = parsed.get_value<int>("square");
auto answer = value * value;
if (parsed.get_value<bool>("verbose"))
auto verbosity = parsed.get_value<int>("verbosity");
if (verbosity == 2)
{
std::cout << "the square of " << value << " equals " << answer << '\n';
}
else if (verbosity == 1)
{
std::cout << value << "^2 == " << answer << '\n';
}
else
{
std::cout << answer << '\n';
Expand Down
2 changes: 1 addition & 1 deletion tutorial/conflicting1.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

auto main(int argc, char * argv[]) -> int
{
auto parser = argparse::ArgumentParser().description("calculate X to the power of Y");
auto parser = argparse::ArgumentParser();
auto group = parser.add_mutually_exclusive_group();
group.add_argument("-v", "--verbose").action(argparse::store_true);
group.add_argument("-q", "--quiet").action(argparse::store_true);
Expand Down
2 changes: 1 addition & 1 deletion tutorial/conflicting.cpp → tutorial/conflicting2.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

auto main(int argc, char * argv[]) -> int
{
auto parser = argparse::ArgumentParser();
auto parser = argparse::ArgumentParser().description("calculate X to the power of Y");
auto group = parser.add_mutually_exclusive_group();
group.add_argument("-v", "--verbose").action(argparse::store_true);
group.add_argument("-q", "--quiet").action(argparse::store_true);
Expand Down
2 changes: 1 addition & 1 deletion tutorial/count.cpp → tutorial/count1.cpp
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#include "argparse.hpp"
#include <iostream>

int main(int argc, char * argv[])
auto main(int argc, char * argv[]) -> int
{
auto parser = argparse::ArgumentParser();
parser.add_argument("square").help("display a square of a given number").type<int>();
Expand Down
2 changes: 1 addition & 1 deletion tutorial/count2.cpp
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#include "argparse.hpp"
#include <iostream>

int main(int argc, char * argv[])
auto main(int argc, char * argv[]) -> int
{
auto parser = argparse::ArgumentParser();
parser.add_argument("square").help("display a square of a given number").type<int>();
Expand Down
2 changes: 1 addition & 1 deletion tutorial/count3.cpp
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#include "argparse.hpp"
#include <iostream>

int main(int argc, char * argv[])
auto main(int argc, char * argv[]) -> int
{
try
{
Expand Down
2 changes: 1 addition & 1 deletion tutorial/count4.cpp
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#include "argparse.hpp"
#include <iostream>

int main(int argc, char * argv[])
auto main(int argc, char * argv[]) -> int
{
auto parser = argparse::ArgumentParser();
parser.add_argument("square").help("display a square of a given number").type<int>();
Expand Down
2 changes: 1 addition & 1 deletion tutorial/custom1.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ inline auto from_string(std::string const & s, geometry::Point & p) -> bool
std::istringstream iss(s);
char comma;
iss >> p.x >> comma >> p.y;
return !iss.fail();
return true;
}

template<>
Expand Down
2 changes: 1 addition & 1 deletion tutorial/custom2.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ inline auto are_equal(geometry::Point const & l, geometry::Point const & r) -> b
auto main(int argc, char * argv[]) -> int
{
auto parser = argparse::ArgumentParser();
parser.add_argument("start").type<geometry::Point>().choices({geometry::Point(0, 0), geometry::Point(1, 1), geometry::Point(2, 2)});
parser.add_argument("start").type<geometry::Point>();
parser.add_argument("end").type<geometry::Point>();
auto parsed = parser.parse_args(argc, argv);
auto start = parsed.get_value<geometry::Point>("start");
Expand Down
4 changes: 2 additions & 2 deletions tutorial/custom.cpp → tutorial/custom3.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ inline auto from_string(std::string const & s, geometry::Point & p) -> bool
std::istringstream iss(s);
char comma;
iss >> p.x >> comma >> p.y;
return true;
return !iss.fail();
}

template<>
Expand All @@ -45,7 +45,7 @@ inline auto are_equal(geometry::Point const & l, geometry::Point const & r) -> b
auto main(int argc, char * argv[]) -> int
{
auto parser = argparse::ArgumentParser();
parser.add_argument("start").type<geometry::Point>();
parser.add_argument("start").type<geometry::Point>().choices({geometry::Point(0, 0), geometry::Point(1, 1), geometry::Point(2, 2)});
parser.add_argument("end").type<geometry::Point>();
auto parsed = parser.parse_args(argc, argv);
auto start = parsed.get_value<geometry::Point>("start");
Expand Down
23 changes: 0 additions & 23 deletions tutorial/nohandling.cpp

This file was deleted.

15 changes: 1 addition & 14 deletions tutorial/nohandling1.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,18 +19,5 @@ auto main(int argc, char * argv[]) -> int
{
Logger logger;
auto parser = argparse::ArgumentParser().handle(argparse::Handle::none);
try
{
auto parsed = parser.parse_args(argc, argv);
if (parsed.get_value<bool>("help"))
{
std::cout << parser.format_help() << '\n';
return 0;
}
}
catch (argparse::parsing_error const & e)
{
std::cout << e.what() << '\n';
return 1;
}
parser.parse_args(argc, argv);
}
34 changes: 28 additions & 6 deletions tutorial/nohandling2.cpp
Original file line number Diff line number Diff line change
@@ -1,14 +1,36 @@
#include "argparse.hpp"
#include <iostream>

class Logger
{
public:
Logger()
{
std::cout << "Log started\n";
}

~Logger()
{
std::cout << "Log ended\n";
}
};

auto main(int argc, char * argv[]) -> int
{
auto parser = argparse::ArgumentParser().handle(argparse::Handle::errors_and_help);
parser.add_argument("--version").action(argparse::version);
auto parsed = parser.parse_args(argc, argv);
if (parsed.get_value<bool>("version"))
Logger logger;
auto parser = argparse::ArgumentParser().handle(argparse::Handle::none);
try
{
auto parsed = parser.parse_args(argc, argv);
if (parsed.get_value<bool>("help"))
{
std::cout << parser.format_help() << '\n';
return 0;
}
}
catch (argparse::parsing_error const & e)
{
std::cout << "This is program version 1.0.0\n";
std::cout << e.what() << '\n';
return 1;
}
return 0;
}
14 changes: 14 additions & 0 deletions tutorial/nohandling3.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
#include "argparse.hpp"
#include <iostream>

auto main(int argc, char * argv[]) -> int
{
auto parser = argparse::ArgumentParser().handle(argparse::Handle::errors_and_help);
parser.add_argument("--version").action(argparse::version);
auto parsed = parser.parse_args(argc, argv);
if (parsed.get_value<bool>("version"))
{
std::cout << "This is program version 1.0.0\n";
}
return 0;
}
4 changes: 2 additions & 2 deletions tutorial/optional1.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@
auto main(int argc, char * argv[]) -> int
{
auto parser = argparse::ArgumentParser();
parser.add_argument("--verbose").help("increase output verbosity").action(argparse::store_true);
parser.add_argument("--verbosity").help("increase output verbosity");
auto parsed = parser.parse_args(argc, argv);
if (parsed.get_value<bool>("verbose"))
if (parsed.get("verbosity"))
{
std::cout << "verbosity turned on\n";
}
Expand Down
2 changes: 1 addition & 1 deletion tutorial/optional2.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
auto main(int argc, char * argv[]) -> int
{
auto parser = argparse::ArgumentParser();
parser.add_argument("-v", "--verbose").help("increase output verbosity").action(argparse::store_true);
parser.add_argument("--verbose").help("increase output verbosity").action(argparse::store_true);
auto parsed = parser.parse_args(argc, argv);
if (parsed.get_value<bool>("verbose"))
{
Expand Down
4 changes: 2 additions & 2 deletions tutorial/optional.cpp → tutorial/optional3.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@
auto main(int argc, char * argv[]) -> int
{
auto parser = argparse::ArgumentParser();
parser.add_argument("--verbosity").help("increase output verbosity");
parser.add_argument("-v", "--verbose").help("increase output verbosity").action(argparse::store_true);
auto parsed = parser.parse_args(argc, argv);
if (parsed.get("verbosity"))
if (parsed.get_value<bool>("verbose"))
{
std::cout << "verbosity turned on\n";
}
Expand Down
2 changes: 1 addition & 1 deletion tutorial/positional1.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
auto main(int argc, char * argv[]) -> int
{
auto parser = argparse::ArgumentParser();
parser.add_argument("echo").help("echo the string you use here");
parser.add_argument("echo");
auto parsed = parser.parse_args(argc, argv);
std::cout << parsed.get_value("echo") << '\n';
}
Loading
Loading