26#ifndef HARNESS_ARG_HANDLER_INCLUDED 
   27#define HARNESS_ARG_HANDLER_INCLUDED 
   35#include "harness_export.h" 
   56  using ActionFunc = std::function<void(
const std::string &)>;
 
  150                         bool ignore_unknown_arguments_ = 
false)
 
  151      : allow_rest_arguments(allow_rest_arguments_),
 
  152        ignore_unknown_arguments(ignore_unknown_arguments_) {}
 
  224  void add_option(
const CmdOption &other) 
noexcept;
 
  245  void process(
const std::vector<std::string> &arguments);
 
  284  bool is_valid_option_name(
const std::string &
name) 
const noexcept;
 
  298  OptionContainer::const_iterator find_option(
 
  299      const std::string &
name) 
const noexcept;
 
  302      std::function<std::pair<bool, CmdOption>(
const CmdOption &)>;
 
  330                                       const std::string &rest_metavar,
 
  331                                       size_t width) 
const noexcept {
 
  332    return usage_lines_if(
 
  333        prefix, rest_metavar, width,
 
  334        [](
const CmdOption &opt) -> std::pair<bool, CmdOption> {
 
  339  std::vector<std::string> usage_lines_if(
 
  340      const std::string &prefix, 
const std::string &rest_metavar, 
size_t width,
 
  341      UsagePredicate predicate) 
const noexcept;
 
  368  std::vector<std::string> option_descriptions(
 
  369      const size_t width, 
const size_t indent) 
const noexcept;
 
  377  OptionContainer::const_iterator 
begin() { 
return options_.begin(); }
 
  385  OptionContainer::const_iterator 
end() { 
return options_.end(); }
 
  414    return rest_arguments_;
 
  427                                    std::map<std::string, std::string>>;
 
  429    return config_overwrites_;
 
std::vector< CmdOption > OptionContainer
Definition of a vector holding unique pointers to CmdOption objects.
Definition: arg_handler.h:84
 
CmdOptionValueReq
Definition: arg_handler.h:44
 
Handles command line arguments.
Definition: arg_handler.h:141
 
ConfigOverwrites config_overwrites_
Keeps configuration options overwrites.
Definition: arg_handler.h:438
 
std::vector< std::string > rest_arguments_
Vector with arguments as strings not processed as options.
Definition: arg_handler.h:436
 
const std::vector< std::string > & get_rest_arguments() const noexcept
Returns the rest arguments.
Definition: arg_handler.h:413
 
std::map< std::pair< std::string, std::string >, std::map< std::string, std::string > > ConfigOverwrites
The key is a section identificator (section name and optional section key), the value is a map of all...
Definition: arg_handler.h:427
 
std::vector< CmdOption > options_
Vector with registered options.
Definition: arg_handler.h:434
 
void clear_options()
Clears registered options.
Definition: arg_handler.h:392
 
const ConfigOverwrites & get_config_overwrites() const noexcept
Definition: arg_handler.h:428
 
OptionContainer::const_iterator begin()
Returns an iterator to first option.
Definition: arg_handler.h:377
 
bool allow_rest_arguments
Whether to allow rest arguments or not.
Definition: arg_handler.h:418
 
CmdArgHandler(bool allow_rest_arguments_, bool ignore_unknown_arguments_=false)
Constructor.
Definition: arg_handler.h:149
 
OptionContainer::const_iterator end()
Returns an iterator to end of the option container.
Definition: arg_handler.h:385
 
const std::vector< CmdOption > & get_options() const noexcept
Gets all registered options.
Definition: arg_handler.h:400
 
bool ignore_unknown_arguments
Whether to ignore unknown arguments.
Definition: arg_handler.h:421
 
std::vector< std::string > usage_lines(const std::string &prefix, const std::string &rest_metavar, size_t width) const noexcept
Produces lines of text suitable to show usage.
Definition: arg_handler.h:329
 
CmdArgHandler()
Default constructor.
Definition: arg_handler.h:159
 
std::function< std::pair< bool, CmdOption >(const CmdOption &)> UsagePredicate
Definition: arg_handler.h:302
 
repeated Action action
Definition: replication_group_member_actions.proto:43
 
case opt name
Definition: sslopt-case.h:33
 
CmdOption stores information about command line options.
Definition: arg_handler.h:55
 
std::function< void(const std::string &)> AtEndActionFunc
Definition: arg_handler.h:57
 
std::string metavar
Definition: arg_handler.h:64
 
CmdOptionValueReq value_req
Definition: arg_handler.h:62
 
CmdOption(OptionNames names_, std::string description_, CmdOptionValueReq value_req_, const std::string metavar_, ActionFunc action_, AtEndActionFunc at_end_action_=[](const std::string &) {})
Definition: arg_handler.h:69
 
std::function< void(const std::string &)> ActionFunc
Definition: arg_handler.h:56
 
std::string description
Definition: arg_handler.h:61
 
std::string value
Definition: arg_handler.h:63
 
bool required
Definition: arg_handler.h:67
 
OptionNames names
Definition: arg_handler.h:60
 
ActionFunc action
Definition: arg_handler.h:65
 
std::vector< std::string > OptionNames
Definition: arg_handler.h:58
 
AtEndActionFunc at_end_action
Definition: arg_handler.h:66