From 24e4d2352f1e07d4ffaba94296a4b44af80ced9b Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Fri, 7 Dec 2012 15:19:23 +0100 Subject: Add command-line support for removing all build artifacts. Task-number: QBS-109 Change-Id: I20e4f8587f880a33de594488bb189649aadaec89 Reviewed-by: Joerg Bornemann --- src/app/qbs/commandlinefrontend.cpp | 8 ++++---- src/app/qbs/parser/command.cpp | 3 ++- src/app/qbs/parser/commandlineoption.cpp | 12 ++++++++++++ src/app/qbs/parser/commandlineoption.h | 10 +++++++++- src/app/qbs/parser/commandlineoptionpool.cpp | 8 ++++++++ src/app/qbs/parser/commandlineoptionpool.h | 1 + src/app/qbs/parser/commandlineparser.cpp | 6 ++++++ src/app/qbs/parser/commandlineparser.h | 1 + 8 files changed, 43 insertions(+), 6 deletions(-) diff --git a/src/app/qbs/commandlinefrontend.cpp b/src/app/qbs/commandlinefrontend.cpp index e724317a1..0a4b50dc6 100644 --- a/src/app/qbs/commandlinefrontend.cpp +++ b/src/app/qbs/commandlinefrontend.cpp @@ -257,17 +257,17 @@ void CommandLineFrontend::handleProjectsResolved() void CommandLineFrontend::makeClean() { + const Project::CleanType cleanType = m_parser.cleanAll() + ? Project::CleanupAll : Project::CleanupTemporaries; if (m_parser.products().isEmpty()) { foreach (const Project &project, m_projects) { - m_buildJobs << project.cleanAllProducts(m_parser.buildOptions(), - Project::CleanupTemporaries, this); + m_buildJobs << project.cleanAllProducts(m_parser.buildOptions(), cleanType, this); } } else { const ProductMap &products = productsToUse(); for (ProductMap::ConstIterator it = products.begin(); it != products.end(); ++it) { m_buildJobs << it.key().cleanSomeProducts(it.value(), m_parser.buildOptions(), - Project::CleanupTemporaries, this); - + cleanType, this); } } connectBuildJobs(); diff --git a/src/app/qbs/parser/command.cpp b/src/app/qbs/parser/command.cpp index 30b87b9a4..1fa78ce07 100644 --- a/src/app/qbs/parser/command.cpp +++ b/src/app/qbs/parser/command.cpp @@ -202,7 +202,8 @@ QList CleanCommand::supportedOptions() const << CommandLineOption::ShowProgressOptionType << CommandLineOption::KeepGoingOptionType << CommandLineOption::DryRunOptionType - << CommandLineOption::ProductsOptionType; + << CommandLineOption::ProductsOptionType + << CommandLineOption::AllArtifactsOptionType; } QString RunCommand::shortDescription() const diff --git a/src/app/qbs/parser/commandlineoption.cpp b/src/app/qbs/parser/commandlineoption.cpp index 019884b6f..77a7a6935 100644 --- a/src/app/qbs/parser/commandlineoption.cpp +++ b/src/app/qbs/parser/commandlineoption.cpp @@ -293,4 +293,16 @@ void LogLevelOption::doParse(const QString &representation, QStringList &input) .arg(representation, levelString, description(command()))); } +QString AllArtifactsOption::description(CommandType command) const +{ + Q_ASSERT(command == CleanCommandType); + return Tr::tr("%1\n\tRemove all build artifacts, not just intermediate ones.\n") + .arg(longRepresentation()); +} + +QString AllArtifactsOption::longRepresentation() const +{ + return QLatin1String("--all-artifacts"); +} + } // namespace qbs diff --git a/src/app/qbs/parser/commandlineoption.h b/src/app/qbs/parser/commandlineoption.h index e10d466bd..0ac2c920e 100644 --- a/src/app/qbs/parser/commandlineoption.h +++ b/src/app/qbs/parser/commandlineoption.h @@ -46,7 +46,8 @@ public: DryRunOptionType, ShowProgressOptionType, ChangedFilesOptionType, - ProductsOptionType + ProductsOptionType, + AllArtifactsOptionType }; virtual ~CommandLineOption(); @@ -162,6 +163,13 @@ public: QString longRepresentation() const; }; +class AllArtifactsOption : public OnOffOption +{ + QString description(CommandType command) const; + QString shortRepresentation() const { return QString(); } + QString longRepresentation() const; +}; + class StringListOption : public CommandLineOption { public: diff --git a/src/app/qbs/parser/commandlineoptionpool.cpp b/src/app/qbs/parser/commandlineoptionpool.cpp index 632bbb081..908271cd5 100644 --- a/src/app/qbs/parser/commandlineoptionpool.cpp +++ b/src/app/qbs/parser/commandlineoptionpool.cpp @@ -70,6 +70,9 @@ CommandLineOption *CommandLineOptionPool::getOption(CommandLineOption::Type type case CommandLineOption::ProductsOptionType: option = new ProductsOption; break; + case CommandLineOption::AllArtifactsOptionType: + option = new AllArtifactsOption; + break; } } return option; @@ -125,4 +128,9 @@ ProductsOption *CommandLineOptionPool::productsOption() const return static_cast(getOption(CommandLineOption::ProductsOptionType)); } +AllArtifactsOption *CommandLineOptionPool::allArtifactsOption() const +{ + return static_cast(getOption(CommandLineOption::AllArtifactsOptionType)); +} + } // namespace qbs diff --git a/src/app/qbs/parser/commandlineoptionpool.h b/src/app/qbs/parser/commandlineoptionpool.h index 30af437f0..2c9f18ca8 100644 --- a/src/app/qbs/parser/commandlineoptionpool.h +++ b/src/app/qbs/parser/commandlineoptionpool.h @@ -51,6 +51,7 @@ public: KeepGoingOption *keepGoingOption() const; JobsOption *jobsOption() const; ProductsOption *productsOption() const; + AllArtifactsOption *allArtifactsOption() const; private: mutable QHash m_options; diff --git a/src/app/qbs/parser/commandlineparser.cpp b/src/app/qbs/parser/commandlineparser.cpp index 3a3262181..a1af61c85 100644 --- a/src/app/qbs/parser/commandlineparser.cpp +++ b/src/app/qbs/parser/commandlineparser.cpp @@ -140,6 +140,12 @@ bool CommandLineParser::showProgress() const return d->showProgress; } +bool CommandLineParser::cleanAll() const +{ + Q_ASSERT(d->command->type() == CleanCommandType); + return d->optionPool.allArtifactsOption()->enabled(); +} + QString CommandLineParser::commandName() const { return d->command->representation(); diff --git a/src/app/qbs/parser/commandlineparser.h b/src/app/qbs/parser/commandlineparser.h index e08fc9669..f1fbea949 100644 --- a/src/app/qbs/parser/commandlineparser.h +++ b/src/app/qbs/parser/commandlineparser.h @@ -57,6 +57,7 @@ public: QStringList products() const; QList buildConfigurations() const; bool showProgress() const; + bool cleanAll() const; private: class CommandLineParserPrivate; -- cgit v1.2.3