summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2018-10-09 22:42:28 +0800
committerruki <[email protected]>2018-10-09 10:14:53 +0800
commitaecf4e3f816fcd2432522f1a6d337df5a1257739 (patch)
tree4bca19e3cf06d7e053083ec20e0817b065cfba18
parentefa00f1b278ec490507e726f57e0e51e8c371619 (diff)
improve macos and winos versions
-rw-r--r--xmake/core/base/macos.lua4
-rw-r--r--xmake/core/base/semver.lua52
-rw-r--r--xmake/core/base/winos.lua4
3 files changed, 58 insertions, 2 deletions
diff --git a/xmake/core/base/macos.lua b/xmake/core/base/macos.lua
index d128714d1..1ea56d4c9 100644
--- a/xmake/core/base/macos.lua
+++ b/xmake/core/base/macos.lua
@@ -26,7 +26,8 @@
local macos = macos or {}
-- load modules
-local os = require("base/os")
+local os = require("base/os")
+local semver = require("base/semver")
-- get system version
function macos.version()
@@ -44,6 +45,7 @@ function macos.version()
if macver then
macver = macver:trim()
end
+ macver = semver.new(macver)
end
-- save to cache
diff --git a/xmake/core/base/semver.lua b/xmake/core/base/semver.lua
index 03234801f..d2c094da5 100644
--- a/xmake/core/base/semver.lua
+++ b/xmake/core/base/semver.lua
@@ -65,6 +65,58 @@ function _instance:__tostring()
return self:rawstr()
end
+-- v1 == v2 (str/ver)?
+function _instance:eq(version)
+ return _instance.__eq(self, version)
+end
+
+-- v1 < v2 (str/ver)?
+function _instance:lt(version)
+ return _instance.__lt(self, version)
+end
+
+-- v1 <= v2 (str/ver)?
+function _instance:le(version)
+ return _instance.__le(self, version)
+end
+
+-- v1 > v2 (str/ver)?
+function _instance:gt(version)
+ return not _instance.__le(self, version)
+end
+
+-- v1 >= v2 (str/ver)?
+function _instance:ge(version)
+ return not _instance.__lt(self, version)
+end
+
+-- v1 == v2?
+function _instance:__eq(version)
+ if type(version) == "string" then
+ return semver.compare(self:rawstr(), version) == 0
+ elseif type(version) == "table" then
+ return semver.compare(self:rawstr(), version:rawstr()) == 0
+ end
+end
+
+-- v1 < v2?
+function _instance:__lt(version)
+ if type(version) == "string" then
+ return semver.compare(self:rawstr(), version) < 0
+ elseif type(version) == "table" then
+ return semver.compare(self:rawstr(), version:rawstr()) < 0
+ end
+end
+
+-- v1 <= v2?
+function _instance:__le(version)
+ if type(version) == "string" then
+ return semver.compare(self:rawstr(), version) <= 0
+ elseif type(version) == "table" then
+ return semver.compare(self:rawstr(), version:rawstr()) <= 0
+ end
+end
+
-- new an instance
function semver.new(version)
diff --git a/xmake/core/base/winos.lua b/xmake/core/base/winos.lua
index c78637b17..40bcf3823 100644
--- a/xmake/core/base/winos.lua
+++ b/xmake/core/base/winos.lua
@@ -26,7 +26,8 @@
local winos = winos or {}
-- load modules
-local os = require("base/os")
+local os = require("base/os")
+local semver = require("base/semver")
-- get system version
function winos.version()
@@ -44,6 +45,7 @@ function winos.version()
if winver then
winver = winver:trim()
end
+ winver = semver.new(winver)
end
-- save to cache