diff options
author | Christian Kandeler <christian.kandeler@digia.com> | 2013-01-30 16:40:13 +0100 |
---|---|---|
committer | Joerg Bornemann <joerg.bornemann@digia.com> | 2013-02-01 10:16:29 +0100 |
commit | 4e5571568512103ee991c8d0175368802132dca1 (patch) | |
tree | d35d0c47df547eb145e50875b339a55dd16425b5 | |
parent | 7297ea0878e034451dbfcb95def5120625bf8d71 (diff) |
Introduce new command-line option "--force".
Useful for overriding certain sanity checks. No use case implemented
yet.
Change-Id: I10df8fbfde9b293832298fa27fc6fd4955dd9a44
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
-rw-r--r-- | src/app/qbs/parser/command.cpp | 3 | ||||
-rw-r--r-- | src/app/qbs/parser/commandlineoption.cpp | 15 | ||||
-rw-r--r-- | src/app/qbs/parser/commandlineoption.h | 11 | ||||
-rw-r--r-- | src/app/qbs/parser/commandlineoptionpool.cpp | 8 | ||||
-rw-r--r-- | src/app/qbs/parser/commandlineoptionpool.h | 1 | ||||
-rw-r--r-- | src/app/qbs/parser/commandlineparser.cpp | 5 | ||||
-rw-r--r-- | src/app/qbs/parser/commandlineparser.h | 1 | ||||
-rw-r--r-- | tests/auto/tools/tst_tools.cpp | 10 |
8 files changed, 52 insertions, 2 deletions
diff --git a/src/app/qbs/parser/command.cpp b/src/app/qbs/parser/command.cpp index ca4553fc8..985ced8bb 100644 --- a/src/app/qbs/parser/command.cpp +++ b/src/app/qbs/parser/command.cpp @@ -172,7 +172,8 @@ static QList<CommandLineOption::Type> buildOptions() << CommandLineOption::KeepGoingOptionType << CommandLineOption::DryRunOptionType << CommandLineOption::ProductsOptionType - << CommandLineOption::ChangedFilesOptionType; + << CommandLineOption::ChangedFilesOptionType + << CommandLineOption::ForceOptionType; } QList<CommandLineOption::Type> BuildCommand::supportedOptions() const diff --git a/src/app/qbs/parser/commandlineoption.cpp b/src/app/qbs/parser/commandlineoption.cpp index eafa198cd..4aab3d054 100644 --- a/src/app/qbs/parser/commandlineoption.cpp +++ b/src/app/qbs/parser/commandlineoption.cpp @@ -310,6 +310,21 @@ QString AllArtifactsOption::longRepresentation() const return QLatin1String("--all-artifacts"); } +QString ForceOption::description(CommandType command) const +{ + Q_UNUSED(command); + return Tr::tr("%1\n\tDisregard objections.\n" + "\tqbs might refuse to execute a given command because " + "certain circumstances make it seem dubious. This option switches the " + "respective checks off.\n").arg(longRepresentation()); +} + +QString ForceOption::longRepresentation() const +{ + return QLatin1String("--force"); +} + + QString InstallRootOption::description(CommandType command) const { Q_ASSERT(command == InstallCommandType || command == RunCommandType); diff --git a/src/app/qbs/parser/commandlineoption.h b/src/app/qbs/parser/commandlineoption.h index 8502751ec..22f9fb0e2 100644 --- a/src/app/qbs/parser/commandlineoption.h +++ b/src/app/qbs/parser/commandlineoption.h @@ -48,7 +48,8 @@ public: ChangedFilesOptionType, ProductsOptionType, AllArtifactsOptionType, - InstallRootOptionType, RemoveFirstOptionType + InstallRootOptionType, RemoveFirstOptionType, + ForceOptionType }; virtual ~CommandLineOption(); @@ -171,6 +172,14 @@ class AllArtifactsOption : public OnOffOption QString longRepresentation() const; }; +class ForceOption : public OnOffOption +{ + QString description(CommandType command) const; + QString shortRepresentation() const { return QString(); } + QString longRepresentation() const; +}; + + class StringListOption : public CommandLineOption { public: diff --git a/src/app/qbs/parser/commandlineoptionpool.cpp b/src/app/qbs/parser/commandlineoptionpool.cpp index b53a93bb3..955b9ecd0 100644 --- a/src/app/qbs/parser/commandlineoptionpool.cpp +++ b/src/app/qbs/parser/commandlineoptionpool.cpp @@ -79,6 +79,9 @@ CommandLineOption *CommandLineOptionPool::getOption(CommandLineOption::Type type case CommandLineOption::RemoveFirstOptionType: option = new RemoveFirstOption; break; + case CommandLineOption::ForceOptionType: + option = new ForceOption; + break; } } return option; @@ -149,4 +152,9 @@ RemoveFirstOption *CommandLineOptionPool::removeFirstoption() const return static_cast<RemoveFirstOption *>(getOption(CommandLineOption::RemoveFirstOptionType)); } +ForceOption *CommandLineOptionPool::forceOption() const +{ + return static_cast<ForceOption *>(getOption(CommandLineOption::ForceOptionType)); +} + } // namespace qbs diff --git a/src/app/qbs/parser/commandlineoptionpool.h b/src/app/qbs/parser/commandlineoptionpool.h index 3a1a16a8f..57fbc3d6e 100644 --- a/src/app/qbs/parser/commandlineoptionpool.h +++ b/src/app/qbs/parser/commandlineoptionpool.h @@ -54,6 +54,7 @@ public: AllArtifactsOption *allArtifactsOption() const; InstallRootOption *installRootOption() const; RemoveFirstOption *removeFirstoption() const; + ForceOption *forceOption() const; private: mutable QHash<CommandLineOption::Type, CommandLineOption *> m_options; diff --git a/src/app/qbs/parser/commandlineparser.cpp b/src/app/qbs/parser/commandlineparser.cpp index 278d484ca..b7563f2ab 100644 --- a/src/app/qbs/parser/commandlineparser.cpp +++ b/src/app/qbs/parser/commandlineparser.cpp @@ -138,6 +138,11 @@ InstallOptions CommandLineParser::installOptions() const return options; } +bool CommandLineParser::force() const +{ + return d->optionPool.forceOption()->enabled(); +} + QStringList CommandLineParser::runArgs() const { Q_ASSERT(d->command->type() == RunCommandType); diff --git a/src/app/qbs/parser/commandlineparser.h b/src/app/qbs/parser/commandlineparser.h index d0dc9c8f3..add8f7ca2 100644 --- a/src/app/qbs/parser/commandlineparser.h +++ b/src/app/qbs/parser/commandlineparser.h @@ -55,6 +55,7 @@ public: QString projectFilePath() const; BuildOptions buildOptions() const; InstallOptions installOptions() const; + bool force() const; QStringList runArgs() const; QStringList products() const; QList<QVariantMap> buildConfigurations() const; diff --git a/tests/auto/tools/tst_tools.cpp b/tests/auto/tools/tst_tools.cpp index 31d85a227..658754d01 100644 --- a/tests/auto/tools/tst_tools.cpp +++ b/tests/auto/tools/tst_tools.cpp @@ -58,19 +58,27 @@ private slots: args.append("-v"); args << "--products" << "blubb"; args << "--changed-files" << "foo,bar" << fileArgs; + args << "--force"; CommandLineParser parser; + QVERIFY(parser.parseCommandLine(args, settings.data())); QCOMPARE(Logger::instance().level(), LoggerTrace); QCOMPARE(parser.command(), BuildCommandType); QCOMPARE(parser.products(), QStringList() << "blubb"); QCOMPARE(parser.buildOptions().changedFiles.count(), 2); QVERIFY(parser.buildOptions().keepGoing); + QVERIFY(parser.force()); + QVERIFY(parser.parseCommandLine(QStringList() << "-vvvqqq" << fileArgs, settings.data())); QCOMPARE(Logger::instance().level(), Logger::defaultLevel()); + QVERIFY(!parser.force()); + QVERIFY(parser.parseCommandLine(QStringList() << "-vvqqq" << fileArgs, settings.data())); QCOMPARE(Logger::instance().level(), LoggerWarning); + QVERIFY(parser.parseCommandLine(QStringList() << "-vvvqq" << fileArgs, settings.data())); QCOMPARE(Logger::instance().level(), LoggerDebug); + QVERIFY(parser.parseCommandLine(QStringList() << "--log-level" << "trace" << fileArgs, settings.data())); QCOMPARE(Logger::instance().level(), LoggerTrace); @@ -94,6 +102,8 @@ private slots: settings.data())); // Wrong argument. QVERIFY(!parser.parseCommandLine(QStringList() << "--log-level" << "blubb" << fileArgs, settings.data())); // Wrong argument. + QVERIFY(!parser.parseCommandLine(QStringList("properties") << fileArgs << "--force", + settings.data())); // Invalid option for command. } void testFileInfo() |