mirror of
https://github.com/MihailRis/voxelcore.git
synced 2026-10-10 21:41:50 +00:00
fix lua version compare
This commit is contained in:
parent
2eae8f6f27
commit
9444dc0c45
1 changed files with 22 additions and 22 deletions
|
|
@ -179,7 +179,7 @@ function place_pack(panel, packinfo, callback, position_func)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local Version = {};
|
local Version = {}
|
||||||
|
|
||||||
function Version.matches_pattern(version)
|
function Version.matches_pattern(version)
|
||||||
for _, letter in string.gmatch(version, "%.+") do
|
for _, letter in string.gmatch(version, "%.+") do
|
||||||
|
|
@ -187,32 +187,32 @@ function Version.matches_pattern(version)
|
||||||
return false;
|
return false;
|
||||||
end
|
end
|
||||||
|
|
||||||
local t = string.split(version, ".");
|
local t = string.split(version, ".")
|
||||||
|
|
||||||
return #t == 2 or #t == 3;
|
return #t == 2 or #t == 3;
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function Version.__equal(ver1, ver2)
|
function Version.__equal(ver1, ver2)
|
||||||
return ver1[1] == ver2[1] and ver1[2] == ver2[2] and ver1[3] == ver2[3];
|
return ver1[1] == ver2[1] and ver1[2] == ver2[2] and ver1[3] == ver2[3]
|
||||||
end
|
end
|
||||||
|
|
||||||
function Version.__greater(ver1, ver2)
|
function Version.__greater(ver1, ver2)
|
||||||
if ver1[1] ~= ver2[1] then return ver1[1] > ver2[1] end;
|
if ver1[1] ~= ver2[1] then return ver1[1] > ver2[1] end
|
||||||
if ver1[2] ~= ver2[2] then return ver1[2] > ver2[2] end;
|
if ver1[2] ~= ver2[2] then return ver1[2] > ver2[2] end
|
||||||
return ver1[3] > ver2[3];
|
return ver1[3] > ver2[3]
|
||||||
end
|
end
|
||||||
|
|
||||||
function Version.__less(ver1, ver2)
|
function Version.__less(ver1, ver2)
|
||||||
return Version.__greater(ver2, ver1);
|
return Version.__greater(ver2, ver1)
|
||||||
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(ver1, ver2)
|
||||||
end
|
end
|
||||||
|
|
||||||
function Version.__less_or_equal(ver1, ver2)
|
function Version.__less_or_equal(ver1, ver2)
|
||||||
return not Version.__greater(ver1, ver2);
|
return not Version.__greater(ver1, ver2)
|
||||||
end
|
end
|
||||||
|
|
||||||
Version.operators = {
|
Version.operators = {
|
||||||
|
|
@ -224,8 +224,8 @@ Version.operators = {
|
||||||
}
|
}
|
||||||
|
|
||||||
function Version.compare(op, ver1, ver2)
|
function Version.compare(op, ver1, ver2)
|
||||||
ver1 = string.split(ver1, ".");
|
ver1 = string.split(ver1, ".")
|
||||||
ver2 = string.split(ver2, ".");
|
ver2 = string.split(ver2, ".")
|
||||||
|
|
||||||
local comparison_func = Version.operators[op];
|
local comparison_func = Version.operators[op];
|
||||||
|
|
||||||
|
|
@ -237,14 +237,14 @@ function Version.compare(op, ver1, ver2)
|
||||||
end
|
end
|
||||||
|
|
||||||
function Version.parse(version)
|
function Version.parse(version)
|
||||||
local op = string.sub(version, 1, 2);
|
local op = string.sub(version, 1, 2)
|
||||||
if op == ">=" or op == "<=" then
|
if op == ">=" or op == "<=" then
|
||||||
return op, string.sub(version, #op + 1);
|
return op, string.sub(version, #op + 1)
|
||||||
end
|
end
|
||||||
|
|
||||||
op = string.sub(version, 1, 1);
|
op = string.sub(version, 1, 1);
|
||||||
if op == ">" or op == "<" then
|
if op == ">" or op == "<" then
|
||||||
return op, string.sub(version, #op + 1);
|
return op, string.sub(version, #op + 1)
|
||||||
end
|
end
|
||||||
|
|
||||||
return "=", version;
|
return "=", version;
|
||||||
|
|
@ -252,12 +252,12 @@ end
|
||||||
|
|
||||||
local function compare_version(dependent_version, actual_version)
|
local function compare_version(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);
|
local op, dep_ver = Version.parse_version(dependent_version)
|
||||||
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
|
||||||
return false;
|
return false
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -277,15 +277,15 @@ function check_dependencies(packinfo)
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
local dep_pack = pack.get_info(depid);
|
local dep_pack = pack.get_info(depid)
|
||||||
|
local op, ver = Version.parse(depver)
|
||||||
|
|
||||||
if not compare_version(depver, dep_pack.version) then
|
if not compare_version(depver, dep_pack.version) then
|
||||||
local op, ver = Version.parse(depver)
|
|
||||||
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"),
|
||||||
dep_pack.version, ver, depid
|
dep_pack.version, ver, depid
|
||||||
);
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
if table.has(packs_installed, packinfo.id) then
|
if table.has(packs_installed, packinfo.id) then
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue