summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--doc/installerfw-using.qdoc3
-rw-r--r--doc/installerfw.qdoc2
-rw-r--r--src/libs/installer/commandlineparser.cpp2
-rw-r--r--src/libs/installer/packagemanagercore.cpp13
-rw-r--r--src/libs/installer/packagemanagercore.h2
-rw-r--r--src/sdk/commandlineinterface.cpp5
-rw-r--r--tests/auto/installer/cliinterface/tst_cliinterface.cpp4
7 files changed, 23 insertions, 8 deletions
diff --git a/doc/installerfw-using.qdoc b/doc/installerfw-using.qdoc
index de354d32b..89c3351ee 100644
--- a/doc/installerfw-using.qdoc
+++ b/doc/installerfw-using.qdoc
@@ -441,7 +441,8 @@
\section1 Listing Installed Components
To get a list and print additional information about currently installed components, run the
- \c list command with the maintenance tool:
+ \c list command with the maintenance tool. The command also accepts an optional regular
+ expression argument to filter the shown component list.
\code
maintenancetool.exe list
diff --git a/doc/installerfw.qdoc b/doc/installerfw.qdoc
index a77459b1f..6d84e51d9 100644
--- a/doc/installerfw.qdoc
+++ b/doc/installerfw.qdoc
@@ -307,7 +307,7 @@
\li rm, remove <pkg ...>
\li Uninstall selected packages and their child components.
\row
- \li li, list
+ \li li, list <regexp>
\li List information about currently installed packages.
\row
\li se, search <regexp>
diff --git a/src/libs/installer/commandlineparser.cpp b/src/libs/installer/commandlineparser.cpp
index 24c771269..4fc295f48 100644
--- a/src/libs/installer/commandlineparser.cpp
+++ b/src/libs/installer/commandlineparser.cpp
@@ -54,7 +54,7 @@ CommandLineParser::CommandLineParser()
.arg(CommandLineOptions::scUpdateShort, CommandLineOptions::scUpdateLong)
+ QString::fromLatin1("\t%1, %2 - uninstall packages and their child components - <pkg1 pkg2 pkg3...>\n")
.arg(CommandLineOptions::scRemoveShort, CommandLineOptions::scRemoveLong)
- + QString::fromLatin1("\t%1, %2 - list currently installed packages\n")
+ + QString::fromLatin1("\t%1, %2 - list currently installed packages - <regexp>\n")
.arg(CommandLineOptions::scListShort, CommandLineOptions::scListLong)
+ QString::fromLatin1("\t%1, %2 - search available packages - <regexp>\n")
.arg(CommandLineOptions::scSearchShort, CommandLineOptions::scSearchLong)
diff --git a/src/libs/installer/packagemanagercore.cpp b/src/libs/installer/packagemanagercore.cpp
index eb866e436..820e939cc 100644
--- a/src/libs/installer/packagemanagercore.cpp
+++ b/src/libs/installer/packagemanagercore.cpp
@@ -2242,16 +2242,23 @@ bool PackageManagerCore::componentUninstallableFromCommandLine(const QString &co
}
/*!
- Lists installed packages without GUI.
+ Lists installed packages without GUI. List of packages can be filtered with \a regexp.
*/
-void PackageManagerCore::listInstalledPackages()
+void PackageManagerCore::listInstalledPackages(const QString &regexp)
{
LocalPackagesHash installedPackages = this->localInstalledPackages();
+ if (!regexp.isEmpty()) {
+ qCDebug(QInstaller::lcInstallerInstallLog)
+ << "Searching packages with regular expression:" << regexp;
+ }
+ const QRegularExpression re(regexp);
+
const QStringList &keys = installedPackages.keys();
foreach (const QString &key, keys) {
KDUpdater::LocalPackage package = installedPackages.value(key);
- d->printLocalPackageInformation(package);
+ if (re.match(package.name).hasMatch())
+ d->printLocalPackageInformation(package);
}
}
diff --git a/src/libs/installer/packagemanagercore.h b/src/libs/installer/packagemanagercore.h
index b0feb1a57..e7cadd4a8 100644
--- a/src/libs/installer/packagemanagercore.h
+++ b/src/libs/installer/packagemanagercore.h
@@ -233,7 +233,7 @@ public:
ComponentModel *defaultComponentModel() const;
ComponentModel *updaterComponentModel() const;
- void listInstalledPackages();
+ void listInstalledPackages(const QString &regexp = QString());
void listAvailablePackages(const QString &regexp);
PackageManagerCore::Status updateComponentsSilently(const QStringList &componentsToUpdate);
PackageManagerCore::Status installSelectedComponentsSilently(const QStringList& components);
diff --git a/src/sdk/commandlineinterface.cpp b/src/sdk/commandlineinterface.cpp
index 3f11c634b..962eab7c0 100644
--- a/src/sdk/commandlineinterface.cpp
+++ b/src/sdk/commandlineinterface.cpp
@@ -130,7 +130,10 @@ int CommandLineInterface::listInstalledPackages()
return EXIT_FAILURE;
}
m_core->setPackageManager();
- m_core->listInstalledPackages();
+ QString regexp;
+ if (!m_positionalArguments.isEmpty())
+ regexp = m_positionalArguments.first();
+ m_core->listInstalledPackages(regexp);
return EXIT_SUCCESS;
}
diff --git a/tests/auto/installer/cliinterface/tst_cliinterface.cpp b/tests/auto/installer/cliinterface/tst_cliinterface.cpp
index 9932adb41..281572111 100644
--- a/tests/auto/installer/cliinterface/tst_cliinterface.cpp
+++ b/tests/auto/installer/cliinterface/tst_cliinterface.cpp
@@ -166,6 +166,10 @@ private slots:
QTest::ignoreMessage(QtDebugMsg, "Id: A");
QTest::ignoreMessage(QtDebugMsg, "Id: B");
core.listInstalledPackages();
+
+ QTest::ignoreMessage(QtDebugMsg, "Id: A");
+ core.listInstalledPackages(QLatin1String("A"));
+
QDir dir(testDirectory);
QVERIFY(dir.removeRecursively());
}