aboutsummaryrefslogtreecommitdiffstats
path: root/src/app/qbs
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2017-10-05 12:37:48 +0200
committerChristian Kandeler <christian.kandeler@qt.io>2017-10-05 15:40:10 +0000
commit047d3f9d30b227685958195d0f08ae143d87e375 (patch)
tree16786710a9fd58967b001475c8edfa552a99c467 /src/app/qbs
parent631b1a1732e9837ae7eeaa5113c4b6c451bae569 (diff)
CLI: Ensure "restore only" mode for commands that don't support -f
This is now guaranteed programatically. Change-Id: Ifda974aa9347801ccf9e8b04f150cdf2368a756e Reviewed-by: Jake Petroules <jake.petroules@qt.io>
Diffstat (limited to 'src/app/qbs')
-rw-r--r--src/app/qbs/commandlinefrontend.cpp6
-rw-r--r--src/app/qbs/parser/commandlineparser.cpp5
-rw-r--r--src/app/qbs/parser/commandlineparser.h1
-rw-r--r--src/app/qbs/parser/parsercommand.cpp5
-rw-r--r--src/app/qbs/parser/parsercommand.h1
5 files changed, 13 insertions, 5 deletions
diff --git a/src/app/qbs/commandlinefrontend.cpp b/src/app/qbs/commandlinefrontend.cpp
index b4d912940..cc08e4b16 100644
--- a/src/app/qbs/commandlinefrontend.cpp
+++ b/src/app/qbs/commandlinefrontend.cpp
@@ -150,12 +150,8 @@ void CommandLineFrontend::start()
params.setSettingsDirectory(m_settings->baseDirectory());
params.setOverrideBuildGraphData(m_parser.command() == ResolveCommandType);
params.setPropertyCheckingMode(ErrorHandlingMode::Strict);
- if (!m_parser.buildBeforeInstalling() || m_parser.command() == DumpNodesTreeCommandType
- || m_parser.command() == CleanCommandType
- || m_parser.command() == StatusCommandType
- || m_parser.command() == UpdateTimestampsCommandType) {
+ if (!m_parser.buildBeforeInstalling() || !m_parser.commandCanResolve())
params.setRestoreBehavior(SetupProjectParameters::RestoreOnly);
- }
foreach (const QVariantMap &buildConfig, m_parser.buildConfigurations()) {
QVariantMap userConfig = buildConfig;
const QString configurationKey = QLatin1String("qbs.configurationName");
diff --git a/src/app/qbs/parser/commandlineparser.cpp b/src/app/qbs/parser/commandlineparser.cpp
index d57141a11..ee59ceac9 100644
--- a/src/app/qbs/parser/commandlineparser.cpp
+++ b/src/app/qbs/parser/commandlineparser.cpp
@@ -275,6 +275,11 @@ QString CommandLineParser::commandName() const
return d->command->representation();
}
+bool CommandLineParser::commandCanResolve() const
+{
+ return d->command->canResolve();
+}
+
QString CommandLineParser::commandDescription() const
{
return d->command->longDescription();
diff --git a/src/app/qbs/parser/commandlineparser.h b/src/app/qbs/parser/commandlineparser.h
index 35f52ecad..27090fd03 100644
--- a/src/app/qbs/parser/commandlineparser.h
+++ b/src/app/qbs/parser/commandlineparser.h
@@ -63,6 +63,7 @@ public:
CommandType command() const;
QString commandName() const;
+ bool commandCanResolve() const;
QString commandDescription() const;
QString projectFilePath() const;
QString projectBuildDirectory() const;
diff --git a/src/app/qbs/parser/parsercommand.cpp b/src/app/qbs/parser/parsercommand.cpp
index c7f896e1a..0b20a61d3 100644
--- a/src/app/qbs/parser/parsercommand.cpp
+++ b/src/app/qbs/parser/parsercommand.cpp
@@ -63,6 +63,11 @@ void Command::parse(QStringList &input)
throwError(Tr::tr("Extraneous input '%1'").arg(input.join(QLatin1Char(' '))));
}
+bool Command::canResolve() const
+{
+ return supportedOptions().contains(CommandLineOption::FileOptionType);
+}
+
void Command::addAllToAdditionalArguments(QStringList &input)
{
while (!input.isEmpty())
diff --git a/src/app/qbs/parser/parsercommand.h b/src/app/qbs/parser/parsercommand.h
index 92b49dadd..d8ff27af3 100644
--- a/src/app/qbs/parser/parsercommand.h
+++ b/src/app/qbs/parser/parsercommand.h
@@ -57,6 +57,7 @@ public:
void parse(QStringList &input);
QStringList additionalArguments() const { return m_additionalArguments; }
+ bool canResolve() const;
protected:
Command(CommandLineOptionPool &optionPool) : m_optionPool(optionPool) {}