diff options
| author | ruki <[email protected]> | 2018-10-09 22:42:28 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2018-10-09 10:14:53 +0800 |
| commit | aecf4e3f816fcd2432522f1a6d337df5a1257739 (patch) | |
| tree | 4bca19e3cf06d7e053083ec20e0817b065cfba18 | |
| parent | efa00f1b278ec490507e726f57e0e51e8c371619 (diff) | |
improve macos and winos versions
| -rw-r--r-- | xmake/core/base/macos.lua | 4 | ||||
| -rw-r--r-- | xmake/core/base/semver.lua | 52 | ||||
| -rw-r--r-- | xmake/core/base/winos.lua | 4 |
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 |
