Euphoria
|
argparse.h
Go to the documentation of this file.
84 ADD_DEFAULT_FORMATTER(eu::core::argparse::ParseResult, std::string, eu::core::argparse::to_string);
111 ADD_DEFAULT_FORMATTER(eu::core::argparse::NameAndArguments, std::string, eu::core::argparse::to_string);
ADD_DEFAULT_FORMATTER(eu::core::argparse::ParseResult, std::string, eu::core::argparse::to_string)
Definition: argparse.cc:45
std::function< ParseResult()> CompleteFunction
Definition: argparse.h:343
bool operator==(const ParseResult &lhs, const ParseResult &rhs)
Definition: argparse.cc:109
int parse_from_main(Parser *parser, int argc, char *argv[])
helper function for parsing directly from main
Definition: argparse.cc:1335
@ parsing
std::function< Result< T >(const std::string &value)> ParseFunction
generic parse function
Definition: argparse.h:338
std::string to_string(const ParseResult &pr)
Definition: argparse.cc:105
void print_parse_error(Runner *runner, ParserBase *base, const std::string &error_message)
Definition: argparse.cc:216
bool operator!=(const ParseResult &lhs, const ParseResult &rhs)
Definition: argparse.cc:116
SubParserStyle
how the subparsing is handled, non-greedy are useful for 'scripting' with subparsers
Definition: argparse.h:399
@ fallback
if argument is invalid, go back one step and try there
std::function< ParseResult(SubParser *)> SubParserCallback
Definition: argparse.h:342
std::string from_default_value_to_string(const T &t)
Definition: default_parse.h:137
Definition: enumtostring.h:28
std::string merge(const std::vector< std::string > &strings) const
Definition: stringmerger.cc:11
named tuple class for argument and name
Definition: argparse.h:244
std::shared_ptr< argparse::Argument > argument
Definition: argparse.h:246
ArgumentAndName(const argparse::Name &n, std::shared_ptr< argparse::Argument > a)
Definition: argparse.cc:325
a argument with no value, probably either a –set-true or a void function like –help
Definition: argparse.h:254
std::function< ParseResult(Runner *)> CallbackFunction
Definition: argparse.h:255
CallbackFunction callback_function
Definition: argparse.h:257
bool have_nargs() override
Definition: argparse.cc:339
std::optional< std::string > get_second_line() override
Definition: argparse.cc:346
ParseResult parse_arguments(Runner *runner, const std::string &name, ParserBase *caller) override
Definition: argparse.cc:355
ArgumentNoValue(CallbackFunction cb)
Definition: argparse.cc:332
ArgumentReader(const NameAndArguments &a)
Definition: argparse.cc:149
Argument & set_help(const std::string &h)
Definition: argparse.cc:310
void operator=(Argument &&)=delete
bool allow_before_positionals
Definition: argparse.h:202
Argument()=default
virtual ~Argument()=default
Argument & set_allow_before_positionals()
Definition: argparse.cc:318
Argument(const Argument &)=delete
virtual ParseResult parse_arguments(Runner *runner, const std::string &name, ParserBase *caller)=0
Argument & set_nargs(const std::string &na)
Definition: argparse.cc:302
virtual std::optional< std::string > get_second_line()=0
virtual bool have_nargs()=0
void operator=(const Argument &)=delete
Argument(Argument &&)=delete
void print_error(const std::string &line) override
Definition: argparse.cc:201
void print_info(const std::string &line) override
Definition: argparse.cc:208
option where the output can either be a single file or "infinite"
Definition: argparse.h:29
FileOutput(const std::string &o)
Definition: argparse.cc:74
std::string get_next_file(bool print=true)
Definition: argparse.cc:79
void create_dir_if_missing() const
Definition: argparse.cc:98
a single argument, probably either a –count 3 or positional input
Definition: argparse.h:306
ParseResult parse_arguments(Runner *runner, const std::string &name, ParserBase *caller) override
Definition: argparse.cc:388
std::function< std::optional< std::string >()> DescribeFunction
Definition: argparse.h:317
MultiArgument(CallbackFunction cb, DescribeFunction d)
Definition: argparse.cc:365
DescribeFunction describe_function
Definition: argparse.h:320
std::optional< std::string > get_second_line() override
Definition: argparse.cc:380
CallbackFunction callback_function
Definition: argparse.h:319
std::function< ParseResult(Runner *runner, const std::string &name, ParserBase *caller, const std::string &value) > CallbackFunction
Definition: argparse.h:316
NameAndArguments(const std::string &n, const std::vector< std::string > &a)
Definition: argparse.cc:122
static NameAndArguments extract(int argc, char *argv[])
Definition: argparse.cc:130
std::vector< std::string > arguments
Definition: argparse.h:100
Name(const char *nn)
std::string validate() const
bool is_optional() const
Definition: argparse.h:42
static constexpr int get_default_return_value(Type pr)
Definition: argparse.h:60
base for the parser, start with Parser and add one or more subparsers
Definition: argparse.h:412
void operator=(ParserBase &&)=delete
void operator=(const ParserBase &)=delete
std::vector< std::shared_ptr< SubParserGroup > > subparser_groups
Definition: argparse.h:418
ParserBase(ParserBase &&)=delete
virtual std::string get_calling_name(const NameAndArguments &args)=0
std::map< std::string, std::shared_ptr< Argument > > optional_arguments
Definition: argparse.h:415
Argument & add_vector(const Name &name, std::vector< T > *target, ParseFunction< T > parse_function=default_parse_function< T >)
add greedy argument, currently also accepts zero
Definition: argparse.h:498
std::vector< ArgumentAndName > positional_argument_list
Definition: argparse.h:414
void on_complete(CompleteFunction com)
Definition: argparse.cc:852
std::shared_ptr< Argument > find_argument(const std::string &name) const
Definition: argparse.cc:869
Argument & set_const(const Name &name, T *target, T t)
Definition: argparse.h:443
virtual ParserBase * get_parent_or_null()=0
std::vector< ArgumentAndName > optional_argument_list
Definition: argparse.h:416
void print_help(std::shared_ptr< Printer > printer, const NameAndArguments &args)
Definition: argparse.cc:613
Argument & set_true(const Name &name, bool *target)
Definition: argparse.cc:836
ParserBase(const ParserBase &)=delete
Argument & set_false(const Name &name, bool *target)
Definition: argparse.cc:844
std::optional< CompleteFunction > on_complete_function
Definition: argparse.h:419
Argument & add_void_function(const Name &name, std::function< void()> void_function)
Definition: argparse.cc:829
virtual ~ParserBase()=default
std::shared_ptr< SubParserGroup > add_sub_parsers(const std::string &name="commands")
Definition: argparse.cc:859
ParserBase(const std::string &d)
Definition: argparse.cc:524
ParseResult parse_args(Runner *runner)
Definition: argparse.cc:1207
Argument & add(const Name &name, T *target, ParseFunction< T > parse_function=default_parse_function< T >)
Definition: argparse.h:453
Argument & add_argument(const Name &name, std::shared_ptr< Argument > argument)
Definition: argparse.cc:802
std::string generate_usage_string(const NameAndArguments &args)
Definition: argparse.cc:550
EnumToStringImplementation< std::shared_ptr< SubParserContainer > > subparsers
Definition: argparse.h:417
root parser. start argumentparsing with this one
Definition: argparse.h:575
ParseResult parse(const NameAndArguments &args)
Definition: argparse.cc:1303
std::shared_ptr< argparse::Printer > printer
Definition: argparse.h:576
ParserBase * get_parent_or_null() override
Definition: argparse.cc:1296
std::string get_calling_name(const NameAndArguments &args) override
Definition: argparse.cc:1328
void operator=(Printer &&)=delete
virtual void print_error(const std::string &line)=0
virtual void print_info(const std::string &line)=0
Printer()=default
Printer(const Printer &)=delete
void operator=(const Printer &)=delete
Printer(Printer &&)=delete
virtual ~Printer()=default
std::shared_ptr< argparse::Printer > printer
Definition: argparse.h:162
a single argument, probably either a –count 3 or positional input
Definition: argparse.h:275
DescribeFunction describe_function
Definition: argparse.h:289
ParseResult parse_arguments(Runner *runner, const std::string &name, ParserBase *caller) override
Definition: argparse.cc:436
CallbackFunction callback_function
Definition: argparse.h:288
std::function< std::optional< std::string >()> DescribeFunction
Definition: argparse.h:286
SingleArgument(CallbackFunction cb, DescribeFunction d)
Definition: argparse.cc:413
std::optional< std::string > get_second_line() override
Definition: argparse.cc:428
std::function< ParseResult(Runner *runner, const std::string &name, ParserBase *caller, const std::string &value) > CallbackFunction
Definition: argparse.h:285
SubParserCallback callback
Definition: argparse.h:359
SubParserContainer(const SubParserNames &n, const std::string &h, SubParserCallback cb)
Definition: argparse.cc:473
subparsers can be grouped and this structs represents that group
Definition: argparse.h:371
void add(const SubParserNames &names, const std::string &desc, SubParserCallback sub)
Definition: argparse.cc:498
std::vector< std::shared_ptr< SubParserContainer > > parsers
Definition: argparse.h:374
SubParserGroup(const std::string &t, ParserBase *o)
Definition: argparse.cc:486
valid names for a single subparser example: [checkout, co] or [pull]
Definition: argparse.h:348
SubParserNames(const char *str)
Definition: argparse.cc:466
subparser, don't create manually but add to a existing parser AddSubParsers()->Add(....
Definition: argparse.h:554
ParserBase * get_parent_or_null() override
Definition: argparse.cc:1267
std::string get_calling_name(const NameAndArguments &args) override
Definition: argparse.cc:1274
SubParser(const std::string &d, ParserBase *p, argparse::Runner *r, const std::string &cn)
Definition: argparse.cc:1252
ParseResult on_complete(CompleteFunction com)
Definition: argparse.cc:1281