| 1 | // SPDX-FileCopyrightText: 2021 Alexander Lohnau <alexander.lohnau@gmx.de> |
| 2 | // SPDX-FileCopyrightText: 2021 Nicolas Fella <nicolas.fella@gmx.de> |
| 3 | // SPDX-License-Identifier: LGPL-2.1-or-later |
| 4 | |
| 5 | #pragma once |
| 6 | |
| 7 | #include "kpackage_debug.h" |
| 8 | #include <KPluginMetaData> |
| 9 | #include <QString> |
| 10 | #include <QVersionNumber> |
| 11 | |
| 12 | inline QString readKPackageType(const KPluginMetaData &metaData) |
| 13 | { |
| 14 | return metaData.value(QStringLiteral("KPackageStructure" )); |
| 15 | } |
| 16 | |
| 17 | inline KPluginMetaData structureForKPackageType(const QString &packageFormat) |
| 18 | { |
| 19 | const QString guessedPath = QStringLiteral("kf6/packagestructure/" ) + QString(packageFormat).toLower().replace(before: QLatin1Char('/'), after: QLatin1Char('_')); |
| 20 | KPluginMetaData guessedData(guessedPath); |
| 21 | if (guessedData.isValid() && readKPackageType(metaData: guessedData) == packageFormat) { |
| 22 | return guessedData; |
| 23 | } |
| 24 | qCDebug(KPACKAGE_LOG) << "Could not find package structure for" << packageFormat << "by plugin path. The guessed path was" << guessedPath; |
| 25 | |
| 26 | const QList<KPluginMetaData> plugins = |
| 27 | KPluginMetaData::findPlugins(QStringLiteral("kf6/packagestructure" ), filter: [packageFormat](const KPluginMetaData &metaData) { |
| 28 | return readKPackageType(metaData) == packageFormat; |
| 29 | }); |
| 30 | return plugins.isEmpty() ? KPluginMetaData() : plugins.first(); |
| 31 | } |
| 32 | |
| 33 | inline bool isVersionNewer(const QString &version1, const QString &version2) |
| 34 | { |
| 35 | const auto v1 = QVersionNumber::fromString(string: version1); |
| 36 | const auto v2 = QVersionNumber::fromString(string: version2); |
| 37 | return v2 > v1; |
| 38 | } |
| 39 | |