aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@digia.com>2013-01-30 16:40:13 +0100
committerJoerg Bornemann <joerg.bornemann@digia.com>2013-02-01 10:16:29 +0100
commit4e5571568512103ee991c8d0175368802132dca1 (patch)
treed35d0c47df547eb145e50875b339a55dd16425b5
parent7297ea0878e034451dbfcb95def5120625bf8d71 (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.cpp3
-rw-r--r--src/app/qbs/parser/commandlineoption.cpp15
-rw-r--r--src/app/qbs/parser/commandlineoption.h11
-rw-r--r--src/app/qbs/parser/commandlineoptionpool.cpp8
-rw-r--r--src/app/qbs/parser/commandlineoptionpool.h1
-rw-r--r--src/app/qbs/parser/commandlineparser.cpp5
-rw-r--r--src/app/qbs/parser/commandlineparser.h1
-rw-r--r--tests/auto/tools/tst_tools.cpp10
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()