fix fix lua version comparision

This commit is contained in:
EsPaKira 2026-08-02 21:07:02 +04:00
parent 9444dc0c45
commit 4be73acc61

View file

@ -182,15 +182,15 @@ end
local Version = {} local Version = {}
function Version.matches_pattern(version) function Version.matches_pattern(version)
for _, letter in string.gmatch(version, "%.+") do local t = string.split(version, ".")
if type(letter) ~= "number" or letter ~= "." then if #t ~= 2 and #t ~= 3 then return false end
return false;
end
local t = string.split(version, ".") for i = 1, #t do
local matched = string.match(t[i], "^%d+$")
return #t == 2 or #t == 3; if not matched then return false end
end end
return true
end end
function Version.__equal(ver1, ver2) function Version.__equal(ver1, ver2)
@ -208,7 +208,7 @@ function Version.__less(ver1, ver2)
end end
function Version.__greater_or_equal(ver1, ver2) function Version.__greater_or_equal(ver1, ver2)
return not Version.__less(ver1, ver2) return not Version.__less(ver2, ver1)
end end
function Version.__less_or_equal(ver1, ver2) function Version.__less_or_equal(ver1, ver2)
@ -230,9 +230,9 @@ function Version.compare(op, ver1, ver2)
local comparison_func = Version.operators[op]; local comparison_func = Version.operators[op];
if comparison_func then if comparison_func then
return comparison_func(ver1, ver2); return comparison_func(ver1, ver2)
else else
return false; return false
end end
end end
@ -247,13 +247,12 @@ function Version.parse(version)
return op, string.sub(version, #op + 1) return op, string.sub(version, #op + 1)
end end
return "=", version; return "=", version
end end
local function compare_version(dependent_version, actual_version) local function compare_version(op, dependent_version, actual_version)
if Version.matches_pattern(dependent_version) and Version.matches_pattern(actual_version) then if Version.matches_pattern(dependent_version) and Version.matches_pattern(actual_version) then
local op, dep_ver = Version.parse_version(dependent_version) return Version.compare(op, dep_ver, actual_version)
Version.compare(op, dep_ver, actual_version)
elseif dependent_version == "*" or dependent_version == actual_version then elseif dependent_version == "*" or dependent_version == actual_version then
return true return true
else else
@ -280,7 +279,7 @@ function check_dependencies(packinfo)
local dep_pack = pack.get_info(depid) local dep_pack = pack.get_info(depid)
local op, ver = Version.parse(depver) local op, ver = Version.parse(depver)
if not compare_version(depver, dep_pack.version) then if not compare_version(op, ver, dep_pack.version) then
return string.format( return string.format(
"%s: %s != %s (%s)", "%s: %s != %s (%s)",
gui.str("error.dependency-version-not-met"), gui.str("error.dependency-version-not-met"),