From 7e8859e2405747fde12e00ee3619f46801f281b1 Mon Sep 17 00:00:00 2001 From: Lorenzo Cogotti Date: Sun, 2 Oct 2022 16:58:58 +0200 Subject: [PATCH] [crush] Update to latest version. --- crush.lua | 37 ++++++++++++++++++++++++++++++++----- 1 file changed, 32 insertions(+), 5 deletions(-) diff --git a/crush.lua b/crush.lua index 5777248..9b3182f 100644 --- a/crush.lua +++ b/crush.lua @@ -7,6 +7,33 @@ local io = require 'io' local os = require 'os' +-- Lua version check + +local function check_version() + -- Generic Lua version check - 5.2 required + if _VERSION then + local maj, min = _VERSION:match("Lua (%d+)%.(%d+)") + + if maj and min then + maj, min = tonumber(maj), tonumber(min) + if maj > 5 or (maj == 5 and min >= 2) then + return true + end + end + end + + -- LuaJIT check - 2.0.0 required (technically 2.0.0_beta11) + if jit and jit.version_num and jit.version_num >= 20000 then + return true + end + + return false +end + +if not check_version() then + error("Unsupported Lua version!\nSorry, crush requires Lua 5.2 or LuaJIT 2.0.0.") +end + -- System specific functions -- -- Portions of this code are based on work from the LuaRocks project. @@ -24,10 +51,6 @@ local chdir local mkdir if is_windows then - -- --------------- - -- NOTE: untested! - -- --------------- - -- local function is_directory(path) local fh, _, code = io.open(path, 'r') @@ -178,7 +201,11 @@ local function fetch(dep) fullcmd = chdir("lib", quiet(cmd)) end - if not os.execute(fullcmd) then + -- On success, os.execute() returns: + -- true on regular Lua + -- 0 on LuaJIT (actual OS error code) + local code = os.execute(fullcmd) + if code ~= true and code ~= 0 then error(dep.name..": Dependency fetch failed ("..cmd..").") end end