summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Komissarov <abbapoh@gmail.com>2021-10-08 17:59:54 +0300
committerIvan Komissarov <ABBAPOH@gmail.com>2021-10-13 17:55:33 +0000
commite7cc3a2cf13db0f786727ce2469f7c66324f35a2 (patch)
tree61f723ac19fa6448c808d63334a9cca544bc8076
parentb58457c033101e35c7de86932885d7c66ed3c62e (diff)
downloadqbs-e7cc3a2cf13db0f786727ce2469f7c66324f35a2.tar.gz
Fix handling pkgconfig operators in js
Change-Id: Id376a85966ecc0defd3d453d79318dae0da9643f Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
-rw-r--r--src/lib/corelib/jsextensions/pkgconfigjs.cpp32
1 files changed, 31 insertions, 1 deletions
diff --git a/src/lib/corelib/jsextensions/pkgconfigjs.cpp b/src/lib/corelib/jsextensions/pkgconfigjs.cpp
index 4a3b9f0e0..49058818e 100644
--- a/src/lib/corelib/jsextensions/pkgconfigjs.cpp
+++ b/src/lib/corelib/jsextensions/pkgconfigjs.cpp
@@ -40,6 +40,7 @@
#include "pkgconfigjs.h"
#include <language/scriptengine.h>
+#include <tools/version.h>
#include <QtScript/qscriptengine.h>
#include <QtScript/qscriptvalue.h>
@@ -82,9 +83,38 @@ QVariantMap packageToMap(const PcPackage &package)
const auto requiredVersionToMap = [](const PcPackage::RequiredVersion &version)
{
+ using Type = PcPackage::RequiredVersion::ComparisonType;
QVariantMap result;
result[QStringLiteral("name")] = QString::fromStdString(version.name);
- result[QStringLiteral("version")] = QString::fromStdString(version.version);
+ const auto versionString = QString::fromStdString(version.version);
+ const auto qbsVersion = Version::fromString(QString::fromStdString(version.version));
+ const auto nextQbsVersion = Version(
+ qbsVersion.majorVersion(),
+ qbsVersion.minorVersion(),
+ qbsVersion.patchLevel() + 1);
+ switch (version.comparison) {
+ case Type::LessThan:
+ result[QStringLiteral("versionBelow")] = versionString;
+ break;
+ case Type::GreaterThan:
+ result[QStringLiteral("versionAtLeast")] = nextQbsVersion.toString();
+ break;
+ case Type::LessThanEqual:
+ result[QStringLiteral("versionBelow")] = nextQbsVersion.toString();
+ break;
+ case Type::GreaterThanEqual:
+ result[QStringLiteral("versionAtLeast")] = versionString;
+ break;
+ case Type::Equal:
+ result[QStringLiteral("version")] = versionString;
+ break;
+ case Type::NotEqual:
+ result[QStringLiteral("versionBelow")] = versionString;
+ result[QStringLiteral("versionAtLeast")] = nextQbsVersion.toString();
+ break;
+ case Type::AlwaysMatch:
+ break;
+ }
result[QStringLiteral("comparison")] = QVariant::fromValue(qint32(version.comparison));
return result;
};