From 73b9609c5472536f0d53a35371a03262127477fe Mon Sep 17 00:00:00 2001 From: lupoDharkael Date: Mon, 23 Apr 2018 19:30:07 +0200 Subject: [PATCH] Command parser: Improve flameshot full error message --- src/cli/commandlineparser.cpp | 18 +++--------------- src/cli/commandoption.cpp | 12 ++++++++++++ src/cli/commandoption.h | 1 + src/main.cpp | 7 ++++++- 4 files changed, 22 insertions(+), 16 deletions(-) diff --git a/src/cli/commandlineparser.cpp b/src/cli/commandlineparser.cpp index feb2ed98..0ff5a628 100644 --- a/src/cli/commandlineparser.cpp +++ b/src/cli/commandlineparser.cpp @@ -35,18 +35,6 @@ auto versionOption = CommandOption({"v", "version"}, auto helpOption = CommandOption({"h", "help"}, "Displays this help"); -QStringList addDashToOptionNames(const QStringList &names) { - QStringList dashedNames; - for (const QString &name: names) { - // prepend "-" to single character options, and "--" to the others - QString dashedName = (name.length() == 1) ? - QStringLiteral("-%1").arg(name) : - QStringLiteral("--%1").arg(name); - dashedNames << dashedName; - } - return dashedNames; -} - QString optionsToString(const QList &options, const QList &arguments) { int size = 0; // track the largest size @@ -54,7 +42,7 @@ QString optionsToString(const QList &options, // save the dashed options and its size in order to print the description // of every option at the same horizontal character position. for (auto const &option: options) { - QStringList dashedOptions = addDashToOptionNames(option.names()); + QStringList dashedOptions = option.dashedNames(); QString joinedDashedOptions = dashedOptions.join(", "); if (!option.valueName().isEmpty()) { joinedDashedOptions += QStringLiteral(" <%1>") @@ -210,7 +198,7 @@ bool CommandLineParser::parse(const QStringList &args) { Node *actualNode = &m_parseTree; auto it = ++args.cbegin(); // check version option - QStringList dashedVersion = addDashToOptionNames(versionOption.names()); + QStringList dashedVersion = versionOption.dashedNames(); if (m_withVersion && args.length() > 1 && dashedVersion.contains(args.at(1))) { @@ -395,7 +383,7 @@ bool CommandLineParser::processIfOptionIsHelp( Node * &actualNode) { bool ok = true; - auto dashedHelpNames = addDashToOptionNames(helpOption.names()); + auto dashedHelpNames = helpOption.dashedNames(); if (m_withHelp && actualIt != args.cend() && dashedHelpNames.contains(*actualIt)) { diff --git a/src/cli/commandoption.cpp b/src/cli/commandoption.cpp index d69be68f..1fcadfeb 100644 --- a/src/cli/commandoption.cpp +++ b/src/cli/commandoption.cpp @@ -48,6 +48,18 @@ QStringList CommandOption::names() const { return m_names; } +QStringList CommandOption::dashedNames() const { + QStringList dashedNames; + for (const QString &name: m_names) { + // prepend "-" to single character options, and "--" to the others + QString dashedName = (name.length() == 1) ? + QStringLiteral("-%1").arg(name) : + QStringLiteral("--%1").arg(name); + dashedNames << dashedName; + } + return dashedNames; +} + void CommandOption::setValueName(const QString &name) { m_valueName = name; } diff --git a/src/cli/commandoption.h b/src/cli/commandoption.h index 68a91280..924a97cf 100644 --- a/src/cli/commandoption.h +++ b/src/cli/commandoption.h @@ -35,6 +35,7 @@ public: void setName(const QString &name); void setNames(const QStringList &names); QStringList names() const; + QStringList dashedNames() const; void setValueName(const QString &name); QString valueName() const; diff --git a/src/main.cpp b/src/main.cpp index ae86065b..d87c91c8 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -241,7 +241,12 @@ int main(int argc, char *argv[]) { bool isRaw = parser.isSet(rawImageOption); // Not a valid command if (!isRaw && !toClipboard && pathValue.isEmpty()) { - QTextStream(stdout) << "you have to set a valid flag:\n\n"; + QTextStream out(stdout); + out << "Invalid format, set where to save the content with one of " + << "the following flags:\n " + << pathOption.dashedNames().join(", ") << "\n " + << rawImageOption.dashedNames().join(", ") << "\n " + << clipboardOption.dashedNames().join(", ") << "\n\n"; parser.parse(QStringList() << argv[0] << "full" << "-h"); goto finish; }