1#ifndef KOUTIL_ARGS_PARSER_H
2#define KOUTIL_ARGS_PARSER_H
24template <extends_result Result = result_base_t>
class parser_t {
96 void show_help(std::ostream& out = std::cout, std::size_t terminal_size = 80)
const {
110template <extends_result Result>
112 : m_main_command(std::move(cmd)) { }
114template <extends_result Result>
116 : m_main_command(name, description) { }
119 return m_main_command.add_command(std::move(command));
123 return m_main_command.add_option(option);
127 m_main_command.add_argument(argument);
131 return parse(std::span<const char* const>(args, argc));
136 m_main_command.process(args, result);
Represents a positional command-line argument.
Definition argument.h:18
void clear_used()
Clears state.
Definition command_impl.h:246
std::string_view description() const
Gets the command description.
Definition command.h:76
std::string_view name() const
Gets the command name.
Definition command.h:70
void show_help(std::ostream &out, std::size_t terminal_size=80) const
Displays help text for this command.
Definition command_impl.h:240
Represents a command-line option.
Definition option.h:41
Command-line parser.
Definition parser.h:24
std::string_view m_version
Definition parser.h:106
void add_argument(const argument_t &argument)
Adds a positional argument.
Definition parser.h:126
void show_help(std::ostream &out=std::cout, std::size_t terminal_size=80) const
Displays help text.
Definition parser.h:96
bool add_command(command_t &&command)
Adds a subcommand.
Definition parser.h:118
argument_t< result_t > argument_t
Definition parser.h:29
parser_t(std::string_view name, std::string_view description)
Constructs a parser with a name and description.
Definition parser.h:115
Result result_t
Definition parser.h:26
bool add_option(const option_t &option)
Adds an option to the parser.
Definition parser.h:122
void clear_used()
Clears state.
Definition parser.h:103
std::string_view name() const
Gets the parser name.
Definition parser.h:48
option_t< result_t > option_t
Definition parser.h:28
command_t m_main_command
Definition parser.h:107
std::string_view description() const
Gets the parser description.
Definition parser.h:54
result_t parse(const char *const *args, std::uint32_t argc)
Parses command-line arguments.
Definition parser.h:130