summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2022-04-15 23:28:56 +0800
committerruki <[email protected]>2022-04-15 23:28:56 +0800
commit1694352246cf6f97cb0aea5180e61a2266a969c5 (patch)
treeba6a801dabdfbef339cf153b011e12c3ae2f4996
parent2979fd9975dd4d16ef33f18bc2d70c67909c5fe7 (diff)
improve winver
-rw-r--r--xmake/core/base/winos.lua56
1 files changed, 26 insertions, 30 deletions
diff --git a/xmake/core/base/winos.lua b/xmake/core/base/winos.lua
index d19faf0cb..f68da88d4 100644
--- a/xmake/core/base/winos.lua
+++ b/xmake/core/base/winos.lua
@@ -113,44 +113,40 @@ end
-- get system version
function winos.version()
+ local winver = winos._VERSION
+ if winver == nil then
- -- get it from cache first
- if winos._VERSION ~= nil then
- return winos._VERSION
- end
-
- -- get winver
- local winver = nil
- local ok, verstr = os.iorun("cmd /c ver")
- if ok and verstr then
- winver = verstr:match("%[.-([%d%.]+)]")
- if winver then
- winver = winver:trim()
- end
- local sem_winver = nil
- local seg = 0
- for num in winver:gmatch("%d+") do
- if seg == 0 then
- sem_winver = num
- elseif seg == 3 then
- sem_winver = sem_winver .. "+" .. num
- else
- sem_winver = sem_winver .. "." .. num
+ -- get winver
+ local ok, verstr = os.iorun("cmd /c ver")
+ if ok and verstr then
+ winver = verstr:match("%[.-([%d%.]+)]")
+ if winver then
+ winver = winver:trim()
end
- seg = seg + 1
+ local sem_winver = nil
+ local seg = 0
+ for num in winver:gmatch("%d+") do
+ if seg == 0 then
+ sem_winver = num
+ elseif seg == 3 then
+ sem_winver = sem_winver .. "+" .. num
+ else
+ sem_winver = sem_winver .. "." .. num
+ end
+ seg = seg + 1
+ end
+ winver = semver.new(sem_winver)
+ end
+ if not winver then
+ winver = semver.new("0.0")
end
- winver = semver.new(sem_winver)
- end
- -- rewrite comparator
- if winver then
+ -- rewrite comparator
winver.eq = winos._version_eq
winver.lt = winos._version_lt
winver.le = winos._version_le
+ winos._VERSION = winver
end
-
- -- save to cache
- winos._VERSION = winver or false
return winver
end