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 | |