diff options
author | Ivan Komissarov <abbapoh@gmail.com> | 2021-10-08 17:59:54 +0300 |
---|---|---|
committer | Ivan Komissarov <ABBAPOH@gmail.com> | 2021-10-13 17:55:33 +0000 |
commit | e7cc3a2cf13db0f786727ce2469f7c66324f35a2 (patch) | |
tree | 61f723ac19fa6448c808d63334a9cca544bc8076 | |
parent | b58457c033101e35c7de86932885d7c66ed3c62e (diff) | |
download | qbs-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.cpp | 32 |
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; }; |