diff options
author | Jake Petroules <jake.petroules@petroules.com> | 2014-07-16 11:33:49 -0400 |
---|---|---|
committer | Jake Petroules <jake.petroules@petroules.com> | 2015-02-12 02:22:42 +0000 |
commit | 5447c56a01ac944900026e4634ef1c6e285eda00 (patch) | |
tree | 8bc2c2f96a760468f37d71fb737ac07f119c3fbd /src/app/qbs/commandlinefrontend.cpp | |
parent | 2e9bb43b47f27641f3ad166665aec5a5e00a8c77 (diff) |
Add an API to support build system generators.
More generally, a plugin-based API to support performing arbitrary
operations producing some output given a resolved qbs project.
Task-number: QBS-658
Change-Id: I5c0c3652520ec17e751ad9980bc186dde58e48d1
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
Diffstat (limited to 'src/app/qbs/commandlinefrontend.cpp')
-rw-r--r-- | src/app/qbs/commandlinefrontend.cpp | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/app/qbs/commandlinefrontend.cpp b/src/app/qbs/commandlinefrontend.cpp index e40dbb566..50332a700 100644 --- a/src/app/qbs/commandlinefrontend.cpp +++ b/src/app/qbs/commandlinefrontend.cpp @@ -342,6 +342,10 @@ void CommandLineFrontend::handleProjectsResolved() if (m_cancelStatus != CancelStatusNone) throw ErrorInfo(Tr::tr("Execution canceled.")); switch (m_parser.command()) { + case GenerateCommandType: + generate(); + qApp->quit(); + break; case ResolveCommandType: qApp->quit(); break; @@ -463,6 +467,28 @@ void CommandLineFrontend::build() m_currentBuildEffort = 0; } +void CommandLineFrontend::generate() +{ + const QString generatorName = m_parser.generateOptions().generatorName(); + QSharedPointer<ProjectGenerator> generator(ProjectGeneratorManager::findGenerator(generatorName)); + if (!generator) { + const QString generatorNames = ProjectGeneratorManager::loadedGeneratorNames() + .join(QLatin1String("\n\t")); + if (generatorName.isEmpty()) { + throw ErrorInfo(Tr::tr("No generator specified. Available generators:\n\t%1") + .arg(generatorNames)); + } + + throw ErrorInfo(Tr::tr("No generator named '%1'. Available generators:\n\t%2") + .arg(generatorName) + .arg(generatorNames)); + } + + generator->clearProjects(); + generator->addProjects(m_projects); + generator->generate(m_parser.installOptions()); +} + int CommandLineFrontend::runTarget() { try { |