-
Martin Wölzer authoredf403d537
short_example.cpp 5.70 KiB
#include <clapp/argument.h>
#include <clapp/build_info.h>
#include <clapp/main_parser.h>
#include <clapp/option.h>
#include <clapp/parser_container.h>
#include <unistd.h>
#include <iostream>
clapp::value::found_func_t::ret_t print_version_and_exit(
const std::string &option);
class cli_parser_t : public clapp::parser::basic_main_parser_t {
public:
cli_parser_t();
explicit cli_parser_t(const cli_parser_t &) = delete;
explicit cli_parser_t(cli_parser_t &&) noexcept = delete;
cli_parser_t &operator=(const cli_parser_t &) = delete;
cli_parser_t &operator=(cli_parser_t &&) noexcept = delete;
~cli_parser_t() override;
// if help is given, help is printed and exit(EXIT_SUCCESS) is requested
clapp::option::help_option_t help{
*this, std::vector<std::string>{"help", "usage"},
std::vector<char>{'h', '?'}, "Show help options."};
// if version is given, print_version_and_exit() is called.
clapp::option::bool_option_t version{
*this, std::vector<std::string>{"version", "vers"}, 'v',
"Show version info",
clapp::value::found_func_t{print_version_and_exit}};
// first mandatory argument of string
clapp::argument::string_argument_t string_arg{*this, "string-arg",
"String argument"};
// second mandatory argument of int32_t
clapp::argument::int32_argument_t int_arg{
*this, "int-arg", "Int argument",
clapp::value::min_max_value_t<std::int32_t>{5, 10}};
// third optional variadic arguments of strings
clapp::argument::variadic_string_argument_t variadic_string_arg{
*this, "variadic-string-arg", "Variadic String argument",
purpose_t::optional};
class and_option_container_t : public clapp::parser::option_container_t {
public:
using clapp::parser::option_container_t::option_container_t;
~and_option_container_t() override;
// mandatory string option
clapp::option::string_param_option_t string_param{
*this, "string", std::vector<char>{'s', '1'}, "String option 1.",
purpose_t::mandatory};
// optional string option (multiple string vectors)
clapp::option::vector_string_param_option_t string_vector_param{
*this, "string-vector", "String vector param.",
purpose_t::optional};
explicit and_option_container_t(const and_option_container_t &) =
delete;
explicit and_option_container_t(and_option_container_t &&) noexcept =
delete;
and_option_container_t &operator=(const and_option_container_t &) =
delete;