diff options
author | hjk <hjk@qt.io> | 2020-02-13 18:01:27 +0100 |
---|---|---|
committer | hjk <hjk@qt.io> | 2020-02-14 15:48:38 +0000 |
commit | 1f5a089f24f56ade1b8c29a0cf07699fc7fd8747 (patch) | |
tree | 2a14795e3bdb61f0f1b88cbcdb3fc0fd32071591 | |
parent | 9af4b8694f82aa455ce844368c4f9c00b6f907b9 (diff) | |
download | qt-creator-1f5a089f24f56ade1b8c29a0cf07699fc7fd8747.tar.gz |
Qbs: Pass related info directly to command line creation function
Saves a few casts and otherwise unneeded accessors.
Change-Id: I7a6ff1e8348a24690f35e69d300463a6c5c18867
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
-rw-r--r-- | src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp | 106 | ||||
-rw-r--r-- | src/plugins/qbsprojectmanager/qbsbuildconfiguration.h | 19 | ||||
-rw-r--r-- | src/plugins/qbsprojectmanager/qbsbuildstep.cpp | 20 | ||||
-rw-r--r-- | src/plugins/qbsprojectmanager/qbsbuildstep.h | 1 | ||||
-rw-r--r-- | src/plugins/qbsprojectmanager/qbscleanstep.cpp | 6 | ||||
-rw-r--r-- | src/plugins/qbsprojectmanager/qbscleanstep.h | 3 | ||||
-rw-r--r-- | src/plugins/qbsprojectmanager/qbsinstallstep.cpp | 17 | ||||
-rw-r--r-- | src/plugins/qbsprojectmanager/qbsinstallstep.h | 1 |
8 files changed, 74 insertions, 99 deletions
diff --git a/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp b/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp index f66aba3165..f2aac00591 100644 --- a/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp +++ b/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp @@ -261,84 +261,7 @@ QString QbsBuildConfiguration::configurationName() const return m_configurationName->value(); } -class StepProxy -{ -public: - StepProxy(const BuildStep *buildStep) - : m_qbsBuildStep(qobject_cast<const QbsBuildStep *>(buildStep)) - , m_qbsCleanStep(qobject_cast<const QbsCleanStep *>(buildStep)) - , m_qbsInstallStep(qobject_cast<const QbsInstallStep *>(buildStep)) - { - } - - QString command() const { - if (m_qbsBuildStep) - return QLatin1String("build"); - if (m_qbsInstallStep) - return QLatin1String("install"); - return QLatin1String("clean"); - } - - bool dryRun() const { - if (m_qbsBuildStep) - return false; - if (m_qbsInstallStep) - return m_qbsInstallStep->dryRun(); - return m_qbsCleanStep->dryRun(); - } - - bool keepGoing() const { - if (m_qbsBuildStep) - return m_qbsBuildStep->keepGoing(); - if (m_qbsInstallStep) - return m_qbsInstallStep->keepGoing(); - return m_qbsCleanStep->keepGoing(); - } - - bool forceProbeExecution() const { return m_qbsBuildStep && m_qbsBuildStep->forceProbes(); } - - bool showCommandLines() const { - return m_qbsBuildStep ? m_qbsBuildStep->showCommandLines() : false; - } - - bool noInstall() const { - return m_qbsBuildStep ? !m_qbsBuildStep->install() : false; - } - - bool noBuild() const { return m_qbsInstallStep; } - - bool cleanInstallRoot() const { - if (m_qbsBuildStep) - return m_qbsBuildStep->cleanInstallRoot(); - if (m_qbsInstallStep) - return m_qbsInstallStep->removeFirst(); - return false; - } - - int jobCount() const { - return m_qbsBuildStep ? m_qbsBuildStep->maxJobs() : 0; - } - - Utils::FilePath installRoot() const { - const QbsBuildStep *bs = nullptr; - if (m_qbsBuildStep) { - bs = m_qbsBuildStep; - } else if (m_qbsInstallStep) { - bs = static_cast<QbsBuildConfiguration *>(m_qbsInstallStep->deployConfiguration() - ->target()->activeBuildConfiguration())->qbsStep(); - } - if (bs) - return bs->installRoot(); - return Utils::FilePath(); - } - -private: - const QbsBuildStep * const m_qbsBuildStep; - const QbsCleanStep * const m_qbsCleanStep; - const QbsInstallStep * const m_qbsInstallStep; -}; - -QString QbsBuildConfiguration::equivalentCommandLine(const BuildStep *buildStep) const +QString QbsBuildConfiguration::equivalentCommandLine(const QbsBuildStepData &stepData) const { CommandLine commandLine; const QString qbsInstallDir = QString::fromLocal8Bit(qgetenv("QBS_INSTALL_DIR")); @@ -346,42 +269,41 @@ QString QbsBuildConfiguration::equivalentCommandLine(const BuildStep *buildStep) ? qbsInstallDir + QLatin1String("/bin/qbs") : QCoreApplication::applicationDirPath() + QLatin1String("/qbs")); commandLine.addArg(QDir::toNativeSeparators(qbsFilePath)); - const StepProxy stepProxy(buildStep); - commandLine.addArg(stepProxy.command()); + commandLine.addArg(stepData.command); const QString buildDir = buildDirectory().toUserOutput(); commandLine.addArgs({"-d", buildDir}); - commandLine.addArgs({"-f", buildStep->project()->projectFilePath().toUserOutput()}); + commandLine.addArgs({"-f", project()->projectFilePath().toUserOutput()}); if (QbsSettings::useCreatorSettingsDirForQbs()) { commandLine.addArgs({"--settings-dir", QDir::toNativeSeparators(QbsSettings::qbsSettingsBaseDir())}); } - if (stepProxy.dryRun()) + if (stepData.dryRun) commandLine.addArg("--dry-run"); - if (stepProxy.keepGoing()) + if (stepData.keepGoing) commandLine.addArg("--keep-going"); - if (stepProxy.forceProbeExecution()) + if (stepData.forceProbeExecution) commandLine.addArg("--force-probe-execution"); - if (stepProxy.showCommandLines()) + if (stepData.showCommandLines) commandLine.addArgs({"--command-echo-mode", "command-line"}); - if (stepProxy.noInstall()) + if (stepData.noInstall) commandLine.addArg("--no-install"); - if (stepProxy.noBuild()) + if (stepData.noBuild) commandLine.addArg("--no-build"); - if (stepProxy.cleanInstallRoot()) + if (stepData.cleanInstallRoot) commandLine.addArg("--clean-install-root"); - const int jobCount = stepProxy.jobCount(); + const int jobCount = stepData.jobCount; if (jobCount > 0) commandLine.addArgs({"--jobs", QString::number(jobCount)}); - const QString profileName = QbsProfileManager::profileNameForKit(buildStep->target()->kit()); + const QString profileName = QbsProfileManager::profileNameForKit(target()->kit()); const QString buildVariant = qbsConfiguration() .value(QLatin1String(Constants::QBS_CONFIG_VARIANT_KEY)).toString(); commandLine.addArg("config:" + configurationName()); commandLine.addArg(QString(Constants::QBS_CONFIG_VARIANT_KEY) + ':' + buildVariant); - const FilePath installRoot = stepProxy.installRoot(); + const FilePath installRoot = stepData.installRoot; if (!installRoot.isEmpty()) { commandLine.addArg(QString(Constants::QBS_INSTALL_ROOT_KEY) + ':' + installRoot.toUserOutput()); - if (qobject_cast<const QbsInstallStep *>(buildStep)) + if (stepData.isInstallStep) commandLine.addArgs({"--installRoot", installRoot.toUserOutput()}); } commandLine.addArg("profile:" + profileName); diff --git a/src/plugins/qbsprojectmanager/qbsbuildconfiguration.h b/src/plugins/qbsprojectmanager/qbsbuildconfiguration.h index cc7e0e90d3..96b66e2f47 100644 --- a/src/plugins/qbsprojectmanager/qbsbuildconfiguration.h +++ b/src/plugins/qbsprojectmanager/qbsbuildconfiguration.h @@ -40,7 +40,22 @@ namespace QbsProjectManager { namespace Internal { class QbsBuildStep; -class QbsProject; + +class QbsBuildStepData +{ +public: + QString command; + bool dryRun = false; + bool keepGoing = false; + bool forceProbeExecution = false; + bool showCommandLines = false; + bool noInstall = false; + bool noBuild = false; + bool cleanInstallRoot = false; + bool isInstallStep = false; + int jobCount = 0; + Utils::FilePath installRoot; +}; class QbsBuildConfiguration final : public ProjectExplorer::BuildConfiguration { @@ -73,7 +88,7 @@ public: QStringList products() const; QString configurationName() const; - QString equivalentCommandLine(const ProjectExplorer::BuildStep *buildStep) const; + QString equivalentCommandLine(const QbsBuildStepData &stepData) const; bool isQmlDebuggingEnabled() const; ProjectExplorer::TriState qmlDebuggingSetting() const; diff --git a/src/plugins/qbsprojectmanager/qbsbuildstep.cpp b/src/plugins/qbsprojectmanager/qbsbuildstep.cpp index 1884d6eb27..dea23b0453 100644 --- a/src/plugins/qbsprojectmanager/qbsbuildstep.cpp +++ b/src/plugins/qbsprojectmanager/qbsbuildstep.cpp @@ -523,6 +523,23 @@ void QbsBuildStep::finish() emit finished(m_lastWasSuccess); } +QbsBuildStepData QbsBuildStep::stepData() const +{ + QbsBuildStepData data; + data.command = "build"; + data.dryRun = false; + data.keepGoing = m_keepGoing; + data.forceProbeExecution = m_forceProbes; + data.showCommandLines = m_showCommandLines; + data.noInstall = !m_install; + data.noBuild = false; + data.cleanInstallRoot = m_cleanInstallDir; + data.jobCount = maxJobs(); + data.installRoot = installRoot(); + return data; +} + + // -------------------------------------------------------------------- // QbsBuildStepConfigWidget: // -------------------------------------------------------------------- @@ -674,7 +691,8 @@ void QbsBuildStepConfigWidget::updateState() const int idx = (buildVariant == Constants::QBS_VARIANT_DEBUG) ? 0 : 1; buildVariantComboBox->setCurrentIndex(idx); const auto qbsBuildConfig = static_cast<QbsBuildConfiguration *>(step()->buildConfiguration()); - QString command = qbsBuildConfig->equivalentCommandLine(qbsStep()); + + QString command = qbsBuildConfig->equivalentCommandLine(qbsStep()->stepData()); for (int i = 0; i < m_propertyCache.count(); ++i) { command += ' ' + m_propertyCache.at(i).name + ':' + m_propertyCache.at(i).effectiveValue; diff --git a/src/plugins/qbsprojectmanager/qbsbuildstep.h b/src/plugins/qbsprojectmanager/qbsbuildstep.h index 79ab7bb043..3c5249dfb0 100644 --- a/src/plugins/qbsprojectmanager/qbsbuildstep.h +++ b/src/plugins/qbsprojectmanager/qbsbuildstep.h @@ -70,6 +70,7 @@ public: bool forceProbes() const { return m_forceProbes; } QbsBuildSystem *qbsBuildSystem() const; + QbsBuildStepData stepData() const; signals: void qbsConfigurationChanged(); diff --git a/src/plugins/qbsprojectmanager/qbscleanstep.cpp b/src/plugins/qbsprojectmanager/qbscleanstep.cpp index b27d16d932..ddecb793dc 100644 --- a/src/plugins/qbsprojectmanager/qbscleanstep.cpp +++ b/src/plugins/qbsprojectmanager/qbscleanstep.cpp @@ -67,8 +67,12 @@ QbsCleanStep::QbsCleanStep(BuildStepList *bsl, Core::Id id) effectiveCommandAspect->setLabelText(tr("Equivalent command line:")); setSummaryUpdater([this, effectiveCommandAspect] { + QbsBuildStepData data; + data.command = "clean"; + data.dryRun = m_dryRunAspect->value(); + data.keepGoing = m_keepGoingAspect->value(); QString command = static_cast<QbsBuildConfiguration *>(buildConfiguration()) - ->equivalentCommandLine(this); + ->equivalentCommandLine(data); effectiveCommandAspect->setValue(command); return tr("<b>Qbs:</b> %1").arg(command); }); diff --git a/src/plugins/qbsprojectmanager/qbscleanstep.h b/src/plugins/qbsprojectmanager/qbscleanstep.h index 1a5c9f8340..7af3d61fc7 100644 --- a/src/plugins/qbsprojectmanager/qbscleanstep.h +++ b/src/plugins/qbsprojectmanager/qbscleanstep.h @@ -44,8 +44,7 @@ public: QbsCleanStep(ProjectExplorer::BuildStepList *bsl, Core::Id id); ~QbsCleanStep() override; - bool dryRun() const { return m_dryRunAspect->value(); } - bool keepGoing() const { return m_keepGoingAspect->value(); } + QbsBuildStepData stepData() const; private: bool init() override; diff --git a/src/plugins/qbsprojectmanager/qbsinstallstep.cpp b/src/plugins/qbsprojectmanager/qbsinstallstep.cpp index bc0abe9866..ba98e6d2e7 100644 --- a/src/plugins/qbsprojectmanager/qbsinstallstep.cpp +++ b/src/plugins/qbsprojectmanager/qbsinstallstep.cpp @@ -231,6 +231,21 @@ void QbsInstallStep::setKeepGoing(bool kg) emit changed(); } +QbsBuildStepData QbsInstallStep::stepData() const +{ + QbsBuildStepData data; + data.command = "install"; + data.dryRun = dryRun(); + data.keepGoing = keepGoing(); + data.noBuild = true; + data.cleanInstallRoot = removeFirst(); + data.isInstallStep = true; + auto bs = static_cast<QbsBuildConfiguration *>(target()->activeBuildConfiguration())->qbsStep(); + if (bs) + data.installRoot = bs->installRoot(); + return data; +}; + // -------------------------------------------------------------------- // QbsInstallStepConfigWidget: // -------------------------------------------------------------------- @@ -320,7 +335,7 @@ void QbsInstallStepConfigWidget::updateState() m_keepGoingCheckBox->setChecked(m_step->keepGoing()); } - QString command = m_step->buildConfig()->equivalentCommandLine(m_step); + QString command = m_step->buildConfig()->equivalentCommandLine(m_step->stepData()); m_commandLineTextEdit->setPlainText(command); diff --git a/src/plugins/qbsprojectmanager/qbsinstallstep.h b/src/plugins/qbsprojectmanager/qbsinstallstep.h index 943beaac89..c02d2ab25f 100644 --- a/src/plugins/qbsprojectmanager/qbsinstallstep.h +++ b/src/plugins/qbsprojectmanager/qbsinstallstep.h @@ -48,6 +48,7 @@ public: bool removeFirst() const { return m_cleanInstallRoot; } bool dryRun() const { return m_dryRun; } bool keepGoing() const { return m_keepGoing; } + QbsBuildStepData stepData() const; signals: void changed(); |