diff options
Diffstat (limited to 'src/sdk/commandlineinterface.cpp')
-rw-r--r-- | src/sdk/commandlineinterface.cpp | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/src/sdk/commandlineinterface.cpp b/src/sdk/commandlineinterface.cpp index 69aa36c43..a6cd22151 100644 --- a/src/sdk/commandlineinterface.cpp +++ b/src/sdk/commandlineinterface.cpp @@ -132,7 +132,7 @@ int CommandLineInterface::searchAvailablePackages() QString regexp; if (!m_positionalArguments.isEmpty()) regexp = m_positionalArguments.first(); - m_core->listAvailablePackages(regexp); + m_core->listAvailablePackages(regexp, parsePackageFilters()); return EXIT_SUCCESS; } @@ -271,3 +271,27 @@ bool CommandLineInterface::setTargetDir() } return false; } + +QHash<QString, QString> CommandLineInterface::parsePackageFilters() +{ + QHash<QString, QString> filterHash; + if (m_parser.isSet(CommandLineOptions::scFilterPackagesLong)) { + const QStringList filterList = m_parser.value(CommandLineOptions::scFilterPackagesLong) + .split(QLatin1Char(',')); + + for (auto &filter : filterList) { + const int i = filter.indexOf(QLatin1Char('=')); + const QString element = filter.left(i).trimmed(); + const QString value = filter.mid(i + 1).trimmed(); + + if ((i == -1) || (filter.count(QLatin1Char('=') > 1)) + || element.isEmpty() || value.isEmpty()) { + qCWarning(QInstaller::lcInstallerInstallLog).nospace() << "Ignoring unknown entry " + << filter << "in package filter arguments. Please use syntax \"element=regex,...\"."; + continue; + } + filterHash.insert(element, value); + } + } + return filterHash; +} |