summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2026-01-08 00:53:46 +0800
committerruki <[email protected]>2026-01-09 17:59:07 +0800
commit5a0021308f56cd3399425e87945d66839753c5c3 (patch)
tree520b662b0e0f30291f4258cc48a7039b7ceb2b6f
parent3b1f621c6b25958eef72dd98df074fcb6bc81d5e (diff)
improve schemes
-rw-r--r--xmake/core/package/package.lua17
1 files changed, 9 insertions, 8 deletions
diff --git a/xmake/core/package/package.lua b/xmake/core/package/package.lua
index 4f4ec06f0..a3e09217c 100644
--- a/xmake/core/package/package.lua
+++ b/xmake/core/package/package.lua
@@ -2458,10 +2458,7 @@ end
-- get current scheme
function _instance:current_scheme()
- if self._CURRENT_SCHEME then
- return self._CURRENT_SCHEME
- end
- return self:scheme("__default__")
+ return self._CURRENT_SCHEME
end
-- get package schemes
@@ -2472,8 +2469,8 @@ function _instance:schemes()
local schemes = self._SCHEMES
if not schemes then
schemes = {}
- for _, name in ipairs(table.wrap(self:get("schemes"))) do
- schemes[name] = scheme.new(name, {package = self})
+ for _, scheme in ipairs(self:schemes_orderlist()) do
+ schemes[scheme:name()] = scheme
end
self._SCHEMES = schemes
end
@@ -2485,8 +2482,12 @@ function _instance:schemes_orderlist()
local schemes_orderlist = self._SCHEMES_ORDERLIST
if not schemes_orderlist then
schemes_orderlist = {}
- for _, name in ipairs(table.wrap(self:get("schemes"))) do
- table.insert(schemes_orderlist, self:scheme(name))
+ local scheme_names = table.wrap(self:get("schemes"))
+ if #scheme_names == 0 then
+ scheme_names = {"__default__"}
+ end
+ for _, name in ipairs(scheme_names) do
+ table.insert(schemes_orderlist, scheme.new(name, {package = self}))
end
self._SCHEMES_ORDERLIST = schemes_orderlist
end