diff options
author | Christian Kandeler <christian.kandeler@digia.com> | 2014-05-22 12:01:14 +0200 |
---|---|---|
committer | Joerg Bornemann <joerg.bornemann@digia.com> | 2014-05-23 13:59:09 +0200 |
commit | 0da3f04e71f6f77f47b10fef6736b1415b1960d2 (patch) | |
tree | 85d152e7f16838ca32ad1cbc8e8b07029a62e855 /src/app/qbs | |
parent | e00b6c86cece5752c53f78bb439a1a21db5b7674 (diff) |
Sanitize the project setup API.
Ever since we introduced "overridden values", the setter for
the build configuration has been pretty much an empty shell, containing
only the build variant and the profile. We now make that explicit,
resulting in a less confusing API that does not expect the caller to
know how to encode profile and build variant information in a QVariantMap.
Change-Id: I60183fc1884a884c9ceba34d7eb460c261be47ca
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Diffstat (limited to 'src/app/qbs')
-rw-r--r-- | src/app/qbs/commandlinefrontend.cpp | 23 |
1 files changed, 9 insertions, 14 deletions
diff --git a/src/app/qbs/commandlinefrontend.cpp b/src/app/qbs/commandlinefrontend.cpp index 9c8a3b96e..4bbde7961 100644 --- a/src/app/qbs/commandlinefrontend.cpp +++ b/src/app/qbs/commandlinefrontend.cpp @@ -128,25 +128,22 @@ void CommandLineFrontend::start() if (!m_parser.buildBeforeInstalling()) params.setRestoreBehavior(SetupProjectParameters::RestoreOnly); foreach (const QVariantMap &buildConfig, m_parser.buildConfigurations()) { - QVariantMap baseConfig; QVariantMap userConfig = buildConfig; - QString buildVariantKey = QLatin1String("qbs.buildVariant"); - baseConfig.insert(buildVariantKey, userConfig.take(buildVariantKey)); - QString profileName; - const QVariantMap::Iterator it = userConfig.find(QLatin1String("qbs.profile")); - if (it != userConfig.end()) { - profileName = it.value().toString(); - baseConfig.insert(it.key(), it.value()); - userConfig.erase(it); - } + const QString buildVariantKey = QLatin1String("qbs.buildVariant"); + const QString profileKey = QLatin1String("qbs.profile"); + const QString buildVariant = userConfig.take(buildVariantKey).toString(); + QString profileName = userConfig.take(profileKey).toString(); if (profileName.isEmpty()) profileName = m_settings->defaultProfile(); + if (profileName.isEmpty()) + throw ErrorInfo(Tr::tr("No profile specified and no default profile exists.")); const Preferences prefs(m_settings, profileName); params.setSearchPaths(prefs.searchPaths(qbsRootPath)); params.setPluginPaths(prefs.pluginPaths(qbsRootPath + QLatin1String("/" QBS_LIBRARY_DIRNAME))); + params.setTopLevelProfile(profileName); + params.setBuildVariant(buildVariant); params.setBuildRoot(buildDirectory(profileName)); - params.setBuildConfiguration(baseConfig); params.setOverriddenValues(userConfig); const ErrorInfo err = params.expandBuildConfiguration(m_settings); if (err.hasError()) @@ -400,9 +397,7 @@ BuildOptions CommandLineFrontend::buildOptions(const Project &project) const { BuildOptions options = m_parser.buildOptions(); if (options.maxJobCount() <= 0) { - const QVariantMap qbsProperties - = project.projectConfiguration().value(QLatin1String("qbs")).toMap(); - const QString profileName = qbsProperties.value(QLatin1String("profile")).toString(); + const QString profileName = project.profile(); QBS_CHECK(!profileName.isEmpty()); options.setMaxJobCount(Preferences(m_settings, profileName).jobs()); } |