aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@digia.com>2012-12-07 15:19:23 +0100
committerJoerg Bornemann <joerg.bornemann@digia.com>2012-12-11 15:51:39 +0100
commit24e4d2352f1e07d4ffaba94296a4b44af80ced9b (patch)
treefc4ac0078509fd02289358f1458e4dadda828c07
parent3ae3304c258d836451553cb15092e68000185812 (diff)
Add command-line support for removing all build artifacts.v0.2.0
Task-number: QBS-109 Change-Id: I20e4f8587f880a33de594488bb189649aadaec89 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
-rw-r--r--src/app/qbs/commandlinefrontend.cpp8
-rw-r--r--src/app/qbs/parser/command.cpp3
-rw-r--r--src/app/qbs/parser/commandlineoption.cpp12
-rw-r--r--src/app/qbs/parser/commandlineoption.h10
-rw-r--r--src/app/qbs/parser/commandlineoptionpool.cpp8
-rw-r--r--src/app/qbs/parser/commandlineoptionpool.h1
-rw-r--r--src/app/qbs/parser/commandlineparser.cpp6
-rw-r--r--src/app/qbs/parser/commandlineparser.h1
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<CommandLineOption::Type> 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<ProductsOption *>(getOption(CommandLineOption::ProductsOptionType));
}
+AllArtifactsOption *CommandLineOptionPool::allArtifactsOption() const
+{
+ return static_cast<AllArtifactsOption *>(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<CommandLineOption::Type, CommandLineOption *> 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<QVariantMap> buildConfigurations() const;
bool showProgress() const;
+ bool cleanAll() const;
private:
class CommandLineParserPrivate;