diff options
-rw-r--r-- | doc/installerfw-using.qdoc | 3 | ||||
-rw-r--r-- | doc/installerfw.qdoc | 2 | ||||
-rw-r--r-- | src/libs/installer/commandlineparser.cpp | 2 | ||||
-rw-r--r-- | src/libs/installer/packagemanagercore.cpp | 13 | ||||
-rw-r--r-- | src/libs/installer/packagemanagercore.h | 2 | ||||
-rw-r--r-- | src/sdk/commandlineinterface.cpp | 5 | ||||
-rw-r--r-- | tests/auto/installer/cliinterface/tst_cliinterface.cpp | 4 |
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 ®exp) { 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 ®exp = QString()); void listAvailablePackages(const QString ®exp); 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()); } |