diff options
| author | ruki <[email protected]> | 2026-01-06 22:37:43 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2026-01-09 17:59:03 +0800 |
| commit | a1aed61239dc4892d67668a120f6a78367dfde30 (patch) | |
| tree | a88c551cfd5258123495e6f1094b6a6543586fff | |
| parent | 60fcc1c6c008d17a5fd0fcf39ba5d9ed3a7c139e (diff) | |
improve scheme:get
| -rw-r--r-- | xmake/core/package/package.lua | 7 | ||||
| -rw-r--r-- | xmake/core/package/scheme.lua | 9 |
2 files changed, 10 insertions, 6 deletions
diff --git a/xmake/core/package/package.lua b/xmake/core/package/package.lua index 849ab4fdd..75571f695 100644 --- a/xmake/core/package/package.lua +++ b/xmake/core/package/package.lua @@ -2462,13 +2462,10 @@ function _instance:schemes() local schemes = self._SCHEMES if not schemes then schemes = {} + schemes["__default__"] = scheme.new("__default__", {package = self}) for _, name in ipairs(table.wrap(self:get("schemes"))) do schemes[name] = scheme.new(name, {package = self}) end - -- add default scheme if no schemes are defined - if table.empty(schemes) then - schemes["__default__"] = scheme.new("__default__", {package = self}) - end self._SCHEMES = schemes end return schemes @@ -2479,6 +2476,8 @@ function _instance:schemes_orderlist() local schemes_orderlist = self._SCHEMES_ORDERLIST if not schemes_orderlist then schemes_orderlist = {} + -- always add default scheme first + table.insert(schemes_orderlist, self:scheme("__default__")) for _, name in ipairs(table.wrap(self:get("schemes"))) do table.insert(schemes_orderlist, self:scheme(name)) end diff --git a/xmake/core/package/scheme.lua b/xmake/core/package/scheme.lua index c2231543a..18d3392a8 100644 --- a/xmake/core/package/scheme.lua +++ b/xmake/core/package/scheme.lua @@ -60,6 +60,11 @@ function _instance:type() return "scheme" end +-- is default scheme? +function _instance:is_default() + return self:name() == "__default__" +end + -- get the it's package function _instance:package() return self._PACKAGE @@ -68,7 +73,7 @@ end -- get the scheme configuration function _instance:get(name) local value = self._INFO:get(name) - if value == nil then + if value == nil and self:is_default() then value = self:package():get(name) end return value @@ -87,7 +92,7 @@ end -- get the extra configuration function _instance:extraconf(name, item, key) local conf = self._INFO:extraconf(name, item, key) - if conf == nil then + if conf == nil and self:is_default() then conf = self:package():extraconf(name, item, key) end return conf |
