diff options
author | Arttu Tarkiainen <arttu.tarkiainen@qt.io> | 2023-09-18 13:13:33 +0300 |
---|---|---|
committer | Arttu Tarkiainen <arttu.tarkiainen@qt.io> | 2023-10-05 16:21:17 +0300 |
commit | 7acda96cb33c3f6c9157cd4de0b73be8aff04a92 (patch) | |
tree | 95155b9271b9fd22ba96d7c7c639d2835ca6c26e /src/libs/installer/packagemanagercore.cpp | |
parent | 5537fbec2d158549eb1350e72600ac2d577ab145 (diff) |
CLI: adjust 'search' command behavior with --type option
In case the "--type=aliases|packages" option is omitted, search first
for aliases, and if not found, search for components. If the option
is specified, search only given type.
This changes the behavior from previous one, where only aliases were
considered for the search by default, if the type option was omitted.
Change-Id: Ie01ea85e1b88376f8df3edbf864d1e78788c3464
Reviewed-by: Iikka Eklund <iikka.eklund@qt.io>
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
Diffstat (limited to 'src/libs/installer/packagemanagercore.cpp')
-rw-r--r-- | src/libs/installer/packagemanagercore.cpp | 93 |
1 files changed, 58 insertions, 35 deletions
diff --git a/src/libs/installer/packagemanagercore.cpp b/src/libs/installer/packagemanagercore.cpp index 62852a682..6b409a778 100644 --- a/src/libs/installer/packagemanagercore.cpp +++ b/src/libs/installer/packagemanagercore.cpp @@ -2506,12 +2506,13 @@ ComponentModel *PackageManagerCore::defaultComponentModel() const if (!d->m_defaultModel) { d->m_defaultModel = componentModel(const_cast<PackageManagerCore*> (this), QLatin1String("AllComponentsModel")); + + connect(this, &PackageManagerCore::startAllComponentsReset, [&] { + d->m_defaultModel->reset(); + }); + connect(this, &PackageManagerCore::finishAllComponentsReset, d->m_defaultModel, + &ComponentModel::reset); } - connect(this, &PackageManagerCore::startAllComponentsReset, [&] { - d->m_defaultModel->reset(); - }); - connect(this, &PackageManagerCore::finishAllComponentsReset, d->m_defaultModel, - &ComponentModel::reset); return d->m_defaultModel; } @@ -2524,12 +2525,13 @@ ComponentModel *PackageManagerCore::updaterComponentModel() const if (!d->m_updaterModel) { d->m_updaterModel = componentModel(const_cast<PackageManagerCore*> (this), QLatin1String("UpdaterComponentsModel")); + + connect(this, &PackageManagerCore::startUpdaterComponentsReset, [&] { + d->m_updaterModel->reset(); + }); + connect(this, &PackageManagerCore::finishUpdaterComponentsReset, d->m_updaterModel, + &ComponentModel::reset); } - connect(this, &PackageManagerCore::startUpdaterComponentsReset, [&] { - d->m_updaterModel->reset(); - }); - connect(this, &PackageManagerCore::finishUpdaterComponentsReset, d->m_updaterModel, - &ComponentModel::reset); return d->m_updaterModel; } @@ -2539,29 +2541,39 @@ ComponentModel *PackageManagerCore::updaterComponentModel() const hash containing package information elements and regular expressions can be used to further filter listed packages. + Returns \c true if matching packages were found, \c false otherwise. + \sa setVirtualComponentsVisible() */ -void PackageManagerCore::listAvailablePackages(const QString ®exp, const QHash<QString, QString> &filters) +bool PackageManagerCore::listAvailablePackages(const QString ®exp, const QHash<QString, QString> &filters) { setPackageViewer(); qCDebug(QInstaller::lcInstallerInstallLog) << "Searching packages with regular expression:" << regexp; ComponentModel *model = defaultComponentModel(); - d->fetchMetaInformationFromRepositories(); + PackagesList packages; + + if (!d->m_updates) { + d->fetchMetaInformationFromRepositories(); + d->addUpdateResourcesFromRepositories(); + + packages = d->remotePackages(); + if (!fetchAllPackages(packages, LocalPackagesMap())) { + qCWarning(QInstaller::lcInstallerInstallLog) + << "There was a problem with loading the package data."; + return false; + } + } else { + // No need to fetch metadata again + packages = d->remotePackages(); + } - d->addUpdateResourcesFromRepositories(); QRegularExpression re(regexp); re.setPatternOptions(QRegularExpression::CaseInsensitiveOption); - const PackagesList &packages = d->remotePackages(); - if (!fetchAllPackages(packages, LocalPackagesMap())) { - qCWarning(QInstaller::lcInstallerInstallLog) - << "There was a problem with loading the package data."; - return; - } PackagesList matchedPackages; - foreach (Package *package, packages) { + foreach (Package *package, qAsConst(packages)) { const QString name = package->data(scName).toString(); Component *component = componentByName(name); if (!component) @@ -2583,19 +2595,24 @@ void PackageManagerCore::listAvailablePackages(const QString ®exp, const QHas matchedPackages.append(package); } } - if (matchedPackages.count() == 0) + if (matchedPackages.count() == 0) { qCDebug(QInstaller::lcInstallerInstallLog) << "No matching packages found."; - else - LoggingHandler::instance().printPackageInformation(matchedPackages, localInstalledPackages()); + return false; + } + + LoggingHandler::instance().printPackageInformation(matchedPackages, localInstalledPackages()); + return true; } /*! Lists available component aliases filtered with \a regexp without GUI. Virtual aliases are not listed unless set visible. + Returns \c true if matching package aliases were found, \c false otherwise. + \sa setVirtualComponentsVisible() */ -void PackageManagerCore::listAvailableAliases(const QString ®exp) +bool PackageManagerCore::listAvailableAliases(const QString ®exp) { setPackageViewer(); qCDebug(QInstaller::lcInstallerInstallLog) @@ -2604,17 +2621,20 @@ void PackageManagerCore::listAvailableAliases(const QString ®exp) ComponentModel *model = defaultComponentModel(); Q_UNUSED(model); - d->fetchMetaInformationFromRepositories(); - d->addUpdateResourcesFromRepositories(); + if (!d->m_updates) { + d->fetchMetaInformationFromRepositories(); + d->addUpdateResourcesFromRepositories(); + + const PackagesList &packages = d->remotePackages(); + if (!fetchAllPackages(packages, LocalPackagesMap())) { + qCWarning(QInstaller::lcInstallerInstallLog) + << "There was a problem with loading the package data."; + return false; + } + } QRegularExpression re(regexp); re.setPatternOptions(QRegularExpression::CaseInsensitiveOption); - const PackagesList &packages = d->remotePackages(); - if (!fetchAllPackages(packages, LocalPackagesMap())) { - qCWarning(QInstaller::lcInstallerInstallLog) - << "There was a problem with loading the package data."; - return; - } QList<ComponentAlias *> matchedAliases; for (auto *alias : qAsConst(d->m_componentAliases)) { @@ -2629,10 +2649,13 @@ void PackageManagerCore::listAvailableAliases(const QString ®exp) } } - if (matchedAliases.isEmpty()) + if (matchedAliases.isEmpty()) { qCDebug(QInstaller::lcInstallerInstallLog) << "No matching package aliases found."; - else - LoggingHandler::instance().printAliasInformation(matchedAliases); + return false; + } + + LoggingHandler::instance().printAliasInformation(matchedAliases); + return true; } bool PackageManagerCore::componentUninstallableFromCommandLine(const QString &componentName) |