diff options
| author | ruki <[email protected]> | 2022-04-15 23:28:56 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2022-04-15 23:28:56 +0800 |
| commit | 1694352246cf6f97cb0aea5180e61a2266a969c5 (patch) | |
| tree | ba6a801dabdfbef339cf153b011e12c3ae2f4996 | |
| parent | 2979fd9975dd4d16ef33f18bc2d70c67909c5fe7 (diff) | |
improve winver
| -rw-r--r-- | xmake/core/base/winos.lua | 56 |
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 |
