summaryrefslogtreecommitdiff
path: root/xmake/core/base/interpreter.lua
diff options
context:
space:
mode:
authorruki <[email protected]>2018-12-07 00:54:03 +0800
committerruki <[email protected]>2018-12-06 23:24:51 +0800
commitb4f35402ca2a97708dc46f6e48d60a3f5bf02f5e (patch)
tree2295e9ccea8377ea90b9407edce14bdb443e9970 /xmake/core/base/interpreter.lua
parentb03855d7dbc88bc38c07d7b62ea73de0dbbef9f6 (diff)
improve set_config
Diffstat (limited to 'xmake/core/base/interpreter.lua')
-rw-r--r--xmake/core/base/interpreter.lua33
1 files changed, 23 insertions, 10 deletions
diff --git a/xmake/core/base/interpreter.lua b/xmake/core/base/interpreter.lua
index 0f5f60ebf..9c2d35450 100644
--- a/xmake/core/base/interpreter.lua
+++ b/xmake/core/base/interpreter.lua
@@ -1066,6 +1066,11 @@ end
-- set_$(name1)("key", "value1")
-- set_$(name2)("key", "value1", "value2", ...)
--
+-- get:
+--
+-- get("name") => {key => values}
+-- get("name.key") => values
+--
function interpreter:api_register_set_keyvalues(scope_kind, ...)
-- define implementation
@@ -1080,14 +1085,18 @@ function interpreter:api_register_set_keyvalues(scope_kind, ...)
extra_config = nil
end
- -- save values
- name = name .. "." .. key
- scope[name] = values
+ -- save values to "name"
+ scope[name] = scope[name] or {}
+ scope[name][key] = values
+
+ -- save values to "name.key"
+ local name_key = name .. "." .. key
+ scope[name_key] = values
-- save extra config
if extra_config then
- scope["__extra_" .. name] = scope["__extra_" .. name] or {}
- local extrascope = scope["__extra_" .. name]
+ scope["__extra_" .. name_key] = scope["__extra_" .. name_key] or {}
+ local extrascope = scope["__extra_" .. name_key]
for _, value in ipairs(values) do
extrascope[value] = extra_config
end
@@ -1116,14 +1125,18 @@ function interpreter:api_register_add_keyvalues(scope_kind, ...)
extra_config = nil
end
- -- save values
- name = name .. "." .. key
- scope[name] = table.join2(scope[name] or {}, values)
+ -- save values to "name"
+ scope[name] = scope[name] or {}
+ scope[name][key] = table.join2(scope[name][key] or {}, values)
+
+ -- save values to "name.key"
+ local name_key = name .. "." .. key
+ scope[name_key] = scope[name][key]
-- save extra config
if extra_config then
- scope["__extra_" .. name] = scope["__extra_" .. name] or {}
- local extrascope = scope["__extra_" .. name]
+ scope["__extra_" .. name_key] = scope["__extra_" .. name_key] or {}
+ local extrascope = scope["__extra_" .. name_key]
for _, value in ipairs(values) do
extrascope[value] = extra_config
end