diff options
author | Christian Kandeler <christian.kandeler@qt.io> | 2017-10-30 13:06:45 +0100 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@qt.io> | 2017-11-07 15:56:10 +0000 |
commit | 98e4cef3ea23842d6bceb438e0f1f8285a01d979 (patch) | |
tree | ddfdf1986fd60290255f7b76614da6a7eccacb7e /src/app | |
parent | 8c341216da67adaf053ab3af9b2ceddfee21d21d (diff) |
CLI: Fix the --version option
This option was supported in a very hacky way by attaching it to the
"build" command, where it does not belong. Add a dedicated command
instead and support the option variant in the same way as we do for
--help.
Change-Id: Ib8f1a0e44f9ae669093f059c86518138df510bc3
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Diffstat (limited to 'src/app')
-rw-r--r-- | src/app/qbs/commandlinefrontend.cpp | 1 | ||||
-rw-r--r-- | src/app/qbs/parser/commandlineoption.cpp | 17 | ||||
-rw-r--r-- | src/app/qbs/parser/commandlineoption.h | 12 | ||||
-rw-r--r-- | src/app/qbs/parser/commandlineoptionpool.cpp | 9 | ||||
-rw-r--r-- | src/app/qbs/parser/commandlineoptionpool.h | 1 | ||||
-rw-r--r-- | src/app/qbs/parser/commandlineparser.cpp | 12 | ||||
-rw-r--r-- | src/app/qbs/parser/commandpool.cpp | 3 | ||||
-rw-r--r-- | src/app/qbs/parser/commandtype.h | 1 | ||||
-rw-r--r-- | src/app/qbs/parser/parsercommand.cpp | 28 | ||||
-rw-r--r-- | src/app/qbs/parser/parsercommand.h | 14 |
10 files changed, 53 insertions, 45 deletions
diff --git a/src/app/qbs/commandlinefrontend.cpp b/src/app/qbs/commandlinefrontend.cpp index 2deaf33e7..2a6dae2b6 100644 --- a/src/app/qbs/commandlinefrontend.cpp +++ b/src/app/qbs/commandlinefrontend.cpp @@ -402,6 +402,7 @@ void CommandLineFrontend::handleProjectsResolved() qApp->quit(); break; case HelpCommandType: + case VersionCommandType: Q_ASSERT_X(false, Q_FUNC_INFO, "Impossible."); } } diff --git a/src/app/qbs/parser/commandlineoption.cpp b/src/app/qbs/parser/commandlineoption.cpp index 011a2c891..0c73f7fb9 100644 --- a/src/app/qbs/parser/commandlineoption.cpp +++ b/src/app/qbs/parser/commandlineoption.cpp @@ -460,23 +460,6 @@ QString BuildNonDefaultOption::longRepresentation() const return QLatin1String("--all-products"); } -QString VersionOption::description(CommandType command) const -{ - Q_UNUSED(command); - return Tr::tr("%1\n" - "\tDisplay the qbs version and exit.\n").arg(longRepresentation()); -} - -QString VersionOption::shortRepresentation() const -{ - return QString(); -} - -QString VersionOption::longRepresentation() const -{ - return QStringLiteral("--version"); -} - InstallRootOption::InstallRootOption() : m_useSysroot(false) { diff --git a/src/app/qbs/parser/commandlineoption.h b/src/app/qbs/parser/commandlineoption.h index f99ceb896..40699f8ee 100644 --- a/src/app/qbs/parser/commandlineoption.h +++ b/src/app/qbs/parser/commandlineoption.h @@ -66,7 +66,6 @@ public: ForceTimestampCheckOptionType, ForceOutputCheckOptionType, BuildNonDefaultOptionType, - VersionOptionType, LogTimeOptionType, CommandEchoModeOptionType, SettingsDirOptionType, @@ -255,17 +254,6 @@ class BuildNonDefaultOption : public OnOffOption QString longRepresentation() const; }; -class VersionOption : public OnOffOption -{ -private: - QString description(CommandType command) const; - QString shortRepresentation() const; - QString longRepresentation() const; - -private: - QString m_projectFilePath; -}; - class StringListOption : public CommandLineOption { diff --git a/src/app/qbs/parser/commandlineoptionpool.cpp b/src/app/qbs/parser/commandlineoptionpool.cpp index 0e873c69a..22bc3f08b 100644 --- a/src/app/qbs/parser/commandlineoptionpool.cpp +++ b/src/app/qbs/parser/commandlineoptionpool.cpp @@ -107,9 +107,6 @@ CommandLineOption *CommandLineOptionPool::getOption(CommandLineOption::Type type case CommandLineOption::BuildNonDefaultOptionType: option = new BuildNonDefaultOption; break; - case CommandLineOption::VersionOptionType: - option = new VersionOption; - break; case CommandLineOption::LogTimeOptionType: option = new LogTimeOption; break; @@ -230,12 +227,6 @@ BuildNonDefaultOption *CommandLineOptionPool::buildNonDefaultOption() const getOption(CommandLineOption::BuildNonDefaultOptionType)); } -VersionOption *CommandLineOptionPool::versionOption() const -{ - return static_cast<VersionOption *>( - getOption(CommandLineOption::VersionOptionType)); -} - LogTimeOption *CommandLineOptionPool::logTimeOption() const { return static_cast<LogTimeOption *>(getOption(CommandLineOption::LogTimeOptionType)); diff --git a/src/app/qbs/parser/commandlineoptionpool.h b/src/app/qbs/parser/commandlineoptionpool.h index 064911e32..e27aeb373 100644 --- a/src/app/qbs/parser/commandlineoptionpool.h +++ b/src/app/qbs/parser/commandlineoptionpool.h @@ -70,7 +70,6 @@ public: ForceTimeStampCheckOption *forceTimestampCheckOption() const; ForceOutputCheckOption *forceOutputCheckOption() const; BuildNonDefaultOption *buildNonDefaultOption() const; - VersionOption *versionOption() const; LogTimeOption *logTimeOption() const; CommandEchoModeOption *commandEchoModeOption() const; SettingsDirOption *settingsDirOption() const; diff --git a/src/app/qbs/parser/commandlineparser.cpp b/src/app/qbs/parser/commandlineparser.cpp index bb33d41ec..434ddf126 100644 --- a/src/app/qbs/parser/commandlineparser.cpp +++ b/src/app/qbs/parser/commandlineparser.cpp @@ -263,7 +263,7 @@ bool CommandLineParser::showProgress() const bool CommandLineParser::showVersion() const { - return d->optionPool.versionOption()->enabled(); + return d->command->type() == VersionCommandType; } QString CommandLineParser::settingsDir() const @@ -329,6 +329,10 @@ void CommandLineParser::CommandLineParserPrivate::doParse() || commandLine.first() == QLatin1String("--help")) { command = commandPool.getCommand(HelpCommandType); commandLine.takeFirst(); + } else if (commandLine.first() == QLatin1String("-V") + || commandLine.first() == QLatin1String("--version")) { + command = commandPool.getCommand(VersionCommandType); + commandLine.takeFirst(); } else { command = commandPool.getCommand(BuildCommandType); } @@ -336,10 +340,7 @@ void CommandLineParser::CommandLineParserPrivate::doParse() } command->parse(commandLine); - if (command->type() == HelpCommandType) - return; - - if (command->type() == BuildCommandType && optionPool.versionOption()->enabled()) + if (command->type() == HelpCommandType || command->type() == VersionCommandType) return; setupBuildDirectory(); @@ -373,6 +374,7 @@ QList<Command *> CommandLineParser::CommandLineParserPrivate::allCommands() cons << commandPool.getCommand(InstallCommandType) << commandPool.getCommand(DumpNodesTreeCommandType) << commandPool.getCommand(ListProductsCommandType) + << commandPool.getCommand(VersionCommandType) << commandPool.getCommand(HelpCommandType); } diff --git a/src/app/qbs/parser/commandpool.cpp b/src/app/qbs/parser/commandpool.cpp index 38114132c..a49608c56 100644 --- a/src/app/qbs/parser/commandpool.cpp +++ b/src/app/qbs/parser/commandpool.cpp @@ -92,6 +92,9 @@ qbs::Command *CommandPool::getCommand(CommandType type) const case HelpCommandType: command = new HelpCommand(m_optionPool); break; + case VersionCommandType: + command = new VersionCommand(m_optionPool); + break; } } return command; diff --git a/src/app/qbs/parser/commandtype.h b/src/app/qbs/parser/commandtype.h index e1df18fb8..a8c618933 100644 --- a/src/app/qbs/parser/commandtype.h +++ b/src/app/qbs/parser/commandtype.h @@ -45,6 +45,7 @@ enum CommandType { ResolveCommandType, BuildCommandType, CleanCommandType, RunCommandType, ShellCommandType, StatusCommandType, UpdateTimestampsCommandType, DumpNodesTreeCommandType, InstallCommandType, HelpCommandType, GenerateCommandType, ListProductsCommandType, + VersionCommandType, }; } // namespace qbs diff --git a/src/app/qbs/parser/parsercommand.cpp b/src/app/qbs/parser/parsercommand.cpp index 69ee4db49..dd07f2cce 100644 --- a/src/app/qbs/parser/parsercommand.cpp +++ b/src/app/qbs/parser/parsercommand.cpp @@ -279,7 +279,6 @@ static QList<CommandLineOption::Type> buildOptions() << CommandLineOption::ForceTimestampCheckOptionType << CommandLineOption::ForceOutputCheckOptionType << CommandLineOption::BuildNonDefaultOptionType - << CommandLineOption::VersionOptionType << CommandLineOption::JobsOptionType << CommandLineOption::CommandEchoModeOptionType << CommandLineOption::NoInstallOptionType @@ -569,4 +568,31 @@ void HelpCommand::parseNext(QStringList &input) QBS_CHECK(input.empty()); } +QString VersionCommand::shortDescription() const +{ + return Tr::tr("Print the Qbs version number to stdout."); +} + +QString VersionCommand::longDescription() const +{ + QString description = Tr::tr("qbs %1\n").arg(representation()); + return description += Tr::tr("%1\n").arg(shortDescription()); +} + +QString VersionCommand::representation() const +{ + return QLatin1String("show-version"); +} + +QList<CommandLineOption::Type> VersionCommand::supportedOptions() const +{ + return QList<CommandLineOption::Type>(); +} + +void VersionCommand::parseNext(QStringList &input) +{ + QBS_CHECK(!input.empty()); + throwError(Tr::tr("This command takes no arguments.")); +} + } // namespace qbs diff --git a/src/app/qbs/parser/parsercommand.h b/src/app/qbs/parser/parsercommand.h index 3df74b467..dcfad7a82 100644 --- a/src/app/qbs/parser/parsercommand.h +++ b/src/app/qbs/parser/parsercommand.h @@ -247,6 +247,20 @@ private: QString m_command; }; +class VersionCommand : public Command +{ +public: + VersionCommand(CommandLineOptionPool &optionPool) : Command(optionPool) {} + +private: + CommandType type() const { return VersionCommandType; } + QString shortDescription() const; + QString longDescription() const; + QString representation() const; + QList<CommandLineOption::Type> supportedOptions() const; + void parseNext(QStringList &input); +}; + } // namespace qbs #endif // QBS_PARSER_COMMAND_H |