From 0f239d0ba87cd300578382d3787b1c66122ac904 Mon Sep 17 00:00:00 2001 From: ruki Date: Thu, 15 Feb 2024 23:02:08 +0800 Subject: [PATCH] improve to select script --- scripts/packages.lua | 46 +++----------------------------------------- 1 file changed, 3 insertions(+), 43 deletions(-) diff --git a/scripts/packages.lua b/scripts/packages.lua index a021da61c..dc6c6b470 100644 --- a/scripts/packages.lua +++ b/scripts/packages.lua @@ -1,59 +1,19 @@ -- imports import("core.package.package") import("core.platform.platform") +import("private.core.base.select_script") -- is supported platform and architecture? function is_supported(instance, plat, arch, opt) -- ignore template package - if instance.is_template and instance:is_template() then + if instance:is_template() then return false end -- get script local script = instance:get("install") - local result = nil - if type(script) == "function" then - result = script - elseif type(script) == "table" then - - -- get plat and arch - local plat = plat or "" - local arch = arch or "" - - -- match pattern - -- - -- `@linux` - -- `@linux|x86_64` - -- `@macosx,linux` - -- `android@macosx,linux` - -- `android|armeabi-v7a@macosx,linux` - -- `android|armeabi-v7a@macosx,linux|x86_64` - -- `android|armeabi-v7a@linux|x86_64` - -- - for _pattern, _script in pairs(script) do - local hosts = {} - local hosts_spec = false - _pattern = _pattern:gsub("@(.+)", function (v) - for _, host in ipairs(v:split(',')) do - hosts[host] = true - hosts_spec = true - end - return "" - end) - if _pattern:trim() == "" and opt and opt.onlyhost then - _pattern = os.subhost() - end - if not _pattern:startswith("__") and (not hosts_spec or hosts[os.subhost() .. '|' .. os.subarch()] or hosts[os.subhost()]) - and (_pattern:trim() == "" or (plat .. '|' .. arch):find('^' .. _pattern .. '$') or plat:find('^' .. _pattern .. '$')) then - result = _script - break - end - end - - -- get generic script - result = result or script["__generic__"] - end + local result = select_script(script, {plat = plat, arch = arch}) return result end