1#ifndef MYTHCOMMANDLINEPARSER_H
2#define MYTHCOMMANDLINEPARSER_H
19class TestCommandLineParser;
25 QString
help, QString longhelp);
32 void AddKeyword(
const QString &keyword) { m_keywords << keyword; }
34 QString
GetName(
void)
const {
return m_name; }
36 int GetKeywordLength(
void)
const;
37 QString GetHelpString(
int off,
const QString& group =
"",
38 bool force =
false)
const;
39 QString GetLongHelpString(QString keyword)
const;
41 bool Set(
const QString& opt);
42 bool Set(
const QString& opt,
const QByteArray& val);
43 void Set(
const QVariant& val) { m_stored = val;
67 CommandLineArg* SetRemoved(QString remstr =
"", QString remver =
"");
69 static void AllowOneOf(
const QList<CommandLineArg*>&
args);
71 void PrintVerbose(
void)
const;
76 QString GetKeywordString(
void)
const;
85 QString GetPreferredKeyword(
void)
const;
86 bool TestLinks(
void)
const;
87 void CleanupLinks(
void);
89 void PrintRemovedWarning(QString &keyword)
const;
90 void PrintDeprecatedWarning(QString &keyword)
const;
93 bool m_converted {
false};
99 QMetaType::Type m_type {QMetaType::UnknownType};
132 static QStringList MythSplitCommandString(
const QString &line);
138 static void PrintVersion(
void) ;
139 void PrintHelp(
void)
const;
140 QString GetHelpString(
void)
const;
142 static const char* NamedOptType(Result
type);
143 virtual bool Parse(
int argc,
const char *
const * argv);
147 CommandLineArg* add(
const QString& arg,
const QString& name,
bool def,
148 QString
help, QString longhelp);
150 CommandLineArg* add(
const QString& arg,
const QString& name,
int def,
151 QString
help, QString longhelp);
154 QString
help, QString longhelp);
156 CommandLineArg* add(
const QString& arg,
const QString& name,
long long def,
157 QString
help, QString longhelp);
159 CommandLineArg* add(
const QString& arg,
const QString& name,
double def,
160 QString
help, QString longhelp);
162 CommandLineArg* add(
const QString& arg,
const QString& name,
const char *def,
163 QString
help, QString longhelp);
165 CommandLineArg* add(
const QString& arg,
const QString& name,
const QString& def,
166 QString
help, QString longhelp);
168 CommandLineArg* add(
const QString& arg,
const QString& name, QSize def,
169 QString
help, QString longhelp);
171 CommandLineArg* add(
const QString& arg,
const QString& name,
const QDateTime& def,
172 QString
help, QString longhelp);
175 QString
help, QString longhelp);
178 QVariant def, QString
help, QString longhelp);
182 CommandLineArg* add(QStringList arglist,
const QString& name,
bool def,
183 QString
help, QString longhelp);
185 CommandLineArg* add(QStringList arglist,
const QString& name,
int def,
186 QString
help, QString longhelp);
189 QString
help, QString longhelp);
191 CommandLineArg* add(QStringList arglist,
const QString& name,
long long def,
192 QString
help, QString longhelp);
194 CommandLineArg* add(QStringList arglist,
const QString& name,
double def,
195 QString
help, QString longhelp);
197 CommandLineArg* add(QStringList arglist,
const QString& name,
const char *def,
198 QString
help, QString longhelp);
200 CommandLineArg* add(QStringList arglist,
const QString& name,
const QString& def,
201 QString
help, QString longhelp);
203 CommandLineArg* add(QStringList arglist,
const QString& name, QSize def,
204 QString
help, QString longhelp);
206 CommandLineArg* add(QStringList arglist,
const QString& name,
const QDateTime& def,
207 QString
help, QString longhelp);
210 QString
help, QString longhelp);
213 QVariant def, QString
help, QString longhelp);
215 QVariant operator[](
const QString &name);
216 QStringList GetArgs(
void)
const;
217 QMap<QString,QString> GetExtra(
void)
const;
218 QString GetPassthrough(
void)
const;
219 QMap<QString,QString> GetSettingsOverride(
void);
220 QString GetLogFilePath(
void);
221 int GetSyslogFacility(
void)
const;
222 LogLevel_t GetLogLevel(
void)
const;
225 bool toBool(
const QString& key)
const;
226 int toInt(
const QString& key)
const;
227 uint toUInt(
const QString& key)
const;
228 long long toLongLong(
const QString& key)
const;
229 double toDouble(
const QString& key)
const;
230 QSize toSize(
const QString& key)
const;
231 QString
toString(
const QString& key)
const;
232 QStringList toStringList(
const QString& key,
const QString& sep =
"")
const;
233 QMap<QString,QString> toMap(
const QString& key)
const;
234 QDateTime toDateTime(
const QString& key)
const;
236 bool SetValue(
const QString &key,
const QVariant& value);
237 int ConfigureLogging(
const QString& mask =
"general",
239 void ApplySettingsOverride(
void);
240 int Daemonize(
void)
const;
243 void allowArgs(
bool allow=
true);
244 void allowExtras(
bool allow=
true);
245 void allowPassthrough(
bool allow=
true);
248 void addVersion(
void);
249 void addWindowed(
void);
251 void addDaemon(
void);
252 void addSettingsOverride(
void);
253 void addRecording(
void);
254 void addGeometry(
void);
255 void addDisplay(
void);
258 void addLogging(
const QString &defaultVerbosity =
"general",
259 LogLevel_t defaultLogLevel = LOG_INFO);
260 void addPIDFile(
void);
262 void addInFile(
bool addOutFile =
false);
263 void addPlatform(
void);
268 Result getOpt(
int argc,
const char *
const * argv,
int &argpos,
269 QString &opt, QByteArray &val);
270 bool ReconcileLinks(
void);
275 bool m_passthroughActive {
false};
276 bool m_overridesImported {
false};
277 bool m_verbose {
false};
Definition for a single command line option.
QList< CommandLineArg * > m_requiredby
void Set(const QVariant &val)
QString GetUsedKeyword(void) const
CommandLineArg * SetGroup(const QString &group)
QList< CommandLineArg * > m_children
QList< CommandLineArg * > m_blocks
QList< CommandLineArg * > m_requires
~CommandLineArg() override=default
QString GetName(void) const
void AddKeyword(const QString &keyword)
QList< CommandLineArg * > m_parents
Parent class for defining application command line parsers.
QMap< QString, CommandLineArg * > m_optionedArgs
friend TestCommandLineParser
QMap< QString, CommandLineArg * > m_namedArgs
QString GetAppName(void) const
virtual QString GetHelpHeader(void) const
virtual void LoadArguments(void)
General purpose reference counter.
Q_DECLARE_METATYPE(std::chrono::seconds)
QString toString(const QDateTime &raw_dt, uint format)
Returns formatted string representing the time.