1 #ifndef WIBBLE_COMMANDLINE_PARSER_H 2 #define WIBBLE_COMMANDLINE_PARSER_H 8 namespace commandline {
22 const std::string&
usage = std::string(),
33 bool parse(
int argc,
const char* argv[])
36 for (
int i = 1; i < argc; i++)
37 m_args.push_back(argv[i]);
42 bool hasNext()
const {
return !m_args.empty(); }
48 std::string res(*m_args.begin());
49 m_args.erase(m_args.begin());
64 Parser(appname), m_version(version)
66 helpGroup =
addGroup(
"Help options");
67 help = helpGroup->add<
BoolOption>(
"help",
'h',
"help",
"",
68 "print commandline help and exit");
70 this->version = helpGroup->add<
BoolOption>(
"version", 0,
"version",
"",
71 "print the program version and exit");
74 void outputHelp(std::ostream& out);
76 bool parse(
int argc,
const char* argv[]);
95 const std::string& appname,
96 const std::string& version,
98 const std::string& author) :
100 m_section(section), m_author(author)
102 manpage = helpGroup->
add<
StringOption>(
"manpage", 0,
"manpage",
"[hooks]",
103 "output the " +
name() +
" manpage and exit");
106 bool parse(
int argc,
const char* argv[]);
119 const std::string& appname,
120 const std::string& version,
122 const std::string& author) :
125 helpCommand =
addEngine(
"help",
"[command]",
"print help information",
126 "With no arguments, print a summary of available commands. " 127 "If given a command name as argument, print detailed informations " 128 "about that command.");
131 bool parse(
int argc,
const char* argv[]);
Parser for commandline arguments, with builting help functions and manpage generation.
Definition: parser.h:87
void addAlias(char c)
Definition: options.h:113
Generic parser for commandline arguments.
Definition: parser.h:13
OptionGroup * helpGroup
Definition: parser.h:78
std::string longDescription
Definition: engine.h:224
Engine * helpCommand
Definition: parser.h:133
std::string next()
Definition: parser.h:44
int m_section
Definition: parser.h:90
MemoryManager m_manager
Definition: parser.h:18
BoolOption * version
Definition: parser.h:80
Parser for commandline arguments, with builting help functions and manpage generation, and requiring a mandatory command.
Definition: parser.h:115
void add(const std::string &alias, Engine *o)
Definition: engine.cpp:39
Parser for commandline arguments, with builting help functions.
Definition: parser.h:57
OptionGroup * addGroup(const std::string &description)
Create an OptionGroup and add it to this engine.
Definition: engine.h:161
Definition: options.h:161
StandardParserWithManpage(const std::string &appname, const std::string &version, int section, const std::string &author)
Definition: parser.h:94
bool hasNext() const
Definition: parser.h:42
Parse commandline options.
Definition: engine.h:38
bool parse(int argc, const char *argv[])
Parse the commandline.
Definition: parser.h:33
const std::string & name() const
Definition: engine.h:107
StandardParser(const std::string &appname, const std::string &version)
Definition: parser.h:63
std::string m_author
Definition: parser.h:91
Boolean option.
Definition: options.h:134
StandardParserWithMandatoryCommand(const std::string &appname, const std::string &version, int section, const std::string &author)
Definition: parser.h:118
Keep track of various wibble::commandline components, and deallocate them at object destruction...
Definition: core.h:62
ArgList m_args
Definition: parser.h:16
Parser(const std::string &name, const std::string &usage=std::string(), const std::string &description=std::string(), const std::string &longDescription=std::string())
Definition: parser.h:21
ArgList::iterator parseList(ArgList &list)
Parse the list of arguments, starting at the beginning and removing the arguments it successfully par...
Definition: engine.h:89
Group related commandline options.
Definition: options.h:359
std::string m_version
Definition: parser.h:60
std::string usage
Definition: engine.h:222
StringOption * manpage
Definition: parser.h:108
std::string description
Definition: engine.h:223
Engine * addEngine(const std::string &name, const std::string &usage=std::string(), const std::string &description=std::string(), const std::string &longDescription=std::string())
Create a Engine and add it to this engine as a command.
Definition: engine.h:182
BoolOption * help
Definition: parser.h:79