diff options
author | Christian Kandeler <christian.kandeler@digia.com> | 2013-06-13 13:45:15 +0200 |
---|---|---|
committer | Joerg Bornemann <joerg.bornemann@digia.com> | 2013-06-17 17:00:27 +0200 |
commit | e46c2ffb61268a8641a2d2f84c2d980aa892e4bd (patch) | |
tree | 46d13dfea381bea7bd6dd9df53ed1907261b478f /src/app/qbs | |
parent | aa74bd71956464adc12249055f8f9e29fe3bd5ad (diff) |
Allow installing without building.
Task-number: QBS-310
Change-Id: I22139a8c537ded6553f9dc326bb202b1b871c0ee
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Diffstat (limited to 'src/app/qbs')
-rw-r--r-- | src/app/qbs/commandlinefrontend.cpp | 29 | ||||
-rw-r--r-- | src/app/qbs/commandlinefrontend.h | 1 | ||||
-rw-r--r-- | src/app/qbs/parser/command.cpp | 6 | ||||
-rw-r--r-- | src/app/qbs/parser/commandlineoption.cpp | 15 | ||||
-rw-r--r-- | src/app/qbs/parser/commandlineoption.h | 10 | ||||
-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 |
9 files changed, 64 insertions, 12 deletions
diff --git a/src/app/qbs/commandlinefrontend.cpp b/src/app/qbs/commandlinefrontend.cpp index 1427ab70d..b6f616c80 100644 --- a/src/app/qbs/commandlinefrontend.cpp +++ b/src/app/qbs/commandlinefrontend.cpp @@ -106,6 +106,8 @@ void CommandLineFrontend::start() params.setIgnoreDifferentProjectFilePath(m_parser.force()); params.setDryRun(m_parser.dryRun()); params.setLogElapsedTime(m_parser.logTime()); + if (!m_parser.buildBeforeInstalling()) + params.setRestoreBehavior(SetupProjectParameters::RestoreOnly); foreach (const QVariantMap &buildConfig, m_parser.buildConfigurations()) { params.setBuildConfiguration(buildConfig); @@ -174,15 +176,9 @@ void CommandLineFrontend::handleJobFinished(bool success, AbstractJob *job) if (m_buildJobs.isEmpty()) { switch (m_parser.command()) { case RunCommandType: - case InstallCommandType: { - Q_ASSERT(m_projects.count() == 1); - const Project project = m_projects.first(); - const ProductMap products = productsToUse(); - InstallJob * const installJob = project.installSomeProducts( - products.value(m_projects.first()), m_parser.installOptions()); - connectJob(installJob); + case InstallCommandType: + install(); break; - } case BuildCommandType: case CleanCommandType: qApp->quit(); @@ -315,9 +311,14 @@ void CommandLineFrontend::handleProjectsResolved() break; } case BuildCommandType: + build(); + break; case InstallCommandType: case RunCommandType: - build(); + if (m_parser.buildBeforeInstalling()) + build(); + else + install(); break; case UpdateTimestampsCommandType: updateTimestamps(); @@ -461,4 +462,14 @@ void CommandLineFrontend::checkForExactlyOneProduct() } } +void CommandLineFrontend::install() +{ + Q_ASSERT(m_projects.count() == 1); + const Project project = m_projects.first(); + const ProductMap products = productsToUse(); + InstallJob * const installJob = project.installSomeProducts( + products.value(m_projects.first()), m_parser.installOptions()); + connectJob(installJob); +} + } // namespace qbs diff --git a/src/app/qbs/commandlinefrontend.h b/src/app/qbs/commandlinefrontend.h index f5452d8be..d00112931 100644 --- a/src/app/qbs/commandlinefrontend.h +++ b/src/app/qbs/commandlinefrontend.h @@ -79,6 +79,7 @@ private: void connectBuildJob(AbstractJob *job); void connectJob(AbstractJob *job); void checkForExactlyOneProduct(); + void install(); Q_INVOKABLE void doCancel(); diff --git a/src/app/qbs/parser/command.cpp b/src/app/qbs/parser/command.cpp index 62fef3de6..998466cdb 100644 --- a/src/app/qbs/parser/command.cpp +++ b/src/app/qbs/parser/command.cpp @@ -254,7 +254,8 @@ QString InstallCommand::longDescription() const .arg(representation()); description += Tr::tr("Install all files marked as installable " "to their respective destinations.\n" - "The project is built first, if necessary.\n"); + "The project is built first, if necessary, unless the '%1' option " + "is given.\n").arg(optionPool().noBuildOption()->longRepresentation()); return description += supportedOptionsDescription(); } @@ -267,7 +268,8 @@ QList<CommandLineOption::Type> installOptions() { return buildOptions() << CommandLineOption::InstallRootOptionType - << CommandLineOption::RemoveFirstOptionType; + << CommandLineOption::RemoveFirstOptionType + << CommandLineOption::NoBuildOptionType; } QList<CommandLineOption::Type> InstallCommand::supportedOptions() const diff --git a/src/app/qbs/parser/commandlineoption.cpp b/src/app/qbs/parser/commandlineoption.cpp index 2c4b544f2..2fc88147a 100644 --- a/src/app/qbs/parser/commandlineoption.cpp +++ b/src/app/qbs/parser/commandlineoption.cpp @@ -385,6 +385,21 @@ QString RemoveFirstOption::longRepresentation() const return QLatin1String("--remove-first"); } + +QString NoBuildOption::description(CommandType command) const +{ + Q_ASSERT(command == InstallCommandType || command == RunCommandType); + Q_UNUSED(command); + return Tr::tr("%1\n\tDo not build before installing.\n") + .arg(longRepresentation()); +} + +QString NoBuildOption::longRepresentation() const +{ + return QLatin1String("--no-build"); +} + + QString LogTimeOption::description(CommandType command) const { Q_UNUSED(command); diff --git a/src/app/qbs/parser/commandlineoption.h b/src/app/qbs/parser/commandlineoption.h index be03301a8..a6e0612fe 100644 --- a/src/app/qbs/parser/commandlineoption.h +++ b/src/app/qbs/parser/commandlineoption.h @@ -48,7 +48,7 @@ public: ChangedFilesOptionType, ProductsOptionType, AllArtifactsOptionType, - InstallRootOptionType, RemoveFirstOptionType, + InstallRootOptionType, RemoveFirstOptionType, NoBuildOptionType, ForceOptionType, LogTimeOptionType }; @@ -249,6 +249,14 @@ public: QString longRepresentation() const; }; +class NoBuildOption : public OnOffOption +{ +public: + QString description(CommandType command) const; + QString shortRepresentation() const { return QString(); } + QString longRepresentation() const; +}; + class LogTimeOption : public OnOffOption { public: diff --git a/src/app/qbs/parser/commandlineoptionpool.cpp b/src/app/qbs/parser/commandlineoptionpool.cpp index 88562178a..df13af9f2 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::NoBuildOptionType: + option = new NoBuildOption; + break; case CommandLineOption::ForceOptionType: option = new ForceOption; break; @@ -155,6 +158,11 @@ RemoveFirstOption *CommandLineOptionPool::removeFirstoption() const return static_cast<RemoveFirstOption *>(getOption(CommandLineOption::RemoveFirstOptionType)); } +NoBuildOption *CommandLineOptionPool::noBuildOption() const +{ + return static_cast<NoBuildOption *>(getOption(CommandLineOption::NoBuildOptionType)); +} + ForceOption *CommandLineOptionPool::forceOption() const { return static_cast<ForceOption *>(getOption(CommandLineOption::ForceOptionType)); diff --git a/src/app/qbs/parser/commandlineoptionpool.h b/src/app/qbs/parser/commandlineoptionpool.h index 0fc740e4f..27de8d60a 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; + NoBuildOption *noBuildOption() const; ForceOption *forceOption() const; LogTimeOption *logTimeOption() const; diff --git a/src/app/qbs/parser/commandlineparser.cpp b/src/app/qbs/parser/commandlineparser.cpp index dd43002fb..b45e98344 100644 --- a/src/app/qbs/parser/commandlineparser.cpp +++ b/src/app/qbs/parser/commandlineparser.cpp @@ -179,6 +179,11 @@ bool CommandLineParser::logTime() const return d->logTime; } +bool CommandLineParser::buildBeforeInstalling() const +{ + return !d->optionPool.noBuildOption()->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 6fdfe4dd2..76ea1ee94 100644 --- a/src/app/qbs/parser/commandlineparser.h +++ b/src/app/qbs/parser/commandlineparser.h @@ -60,6 +60,7 @@ public: bool force() const; bool dryRun() const; bool logTime() const; + bool buildBeforeInstalling() const; QStringList runArgs() const; QStringList products() const; QList<QVariantMap> buildConfigurations() const; |