summaryrefslogtreecommitdiff
path: root/xmake/core/base/task.lua
diff options
context:
space:
mode:
authorruki <[email protected]>2016-02-25 09:01:33 +0800
committerruki <[email protected]>2016-02-25 09:01:33 +0800
commita077113ea61e7544e8f702104a0f3ca7535a72cd (patch)
treeb3f3401b28adfa3ed51260d00ec683ca8615ba4d /xmake/core/base/task.lua
parent3456f0e1f8fb59aed918075250b2f112b91a2255 (diff)
filter the default value for task menu
Diffstat (limited to 'xmake/core/base/task.lua')
-rw-r--r--xmake/core/base/task.lua38
1 files changed, 38 insertions, 0 deletions
diff --git a/xmake/core/base/task.lua b/xmake/core/base/task.lua
index d7893d674..bbf12d8a2 100644
--- a/xmake/core/base/task.lua
+++ b/xmake/core/base/task.lua
@@ -27,6 +27,7 @@ local task = task or {}
local os = require("base/os")
local table = require("base/table")
local utils = require("base/utils")
+local filter = require("base/filter")
local string = require("base/string")
local global = require("base/global")
local interpreter = require("base/interpreter")
@@ -63,6 +64,25 @@ function task._interpreter()
-- register api: set_task_menu()
interp:api_register_set_values("task", "task", "menu")
+ -- set filter
+ interp:filter_set(filter.init(function (variable)
+
+ -- check
+ assert(variable)
+
+ -- init maps
+ local maps =
+ {
+ host = xmake._HOST
+ }
+
+ -- map it
+ result = maps[variable]
+
+ -- ok?
+ return result
+ end))
+
-- save interpreter
task._INTERPRETER = interp
@@ -130,6 +150,10 @@ function task.menu()
local tasks = task.tasks()
assert(tasks)
+ -- the interpreter
+ local interp = task._interpreter()
+ assert(interp)
+
-- make menu
local menu = {}
for taskname, taskinfo in pairs(tasks) do
@@ -153,6 +177,20 @@ function task.menu()
table.insert(options, 7, {})
end
+ -- filter options
+ if options and interp:filter() then
+
+ -- filter option
+ for _, option in ipairs(options) do
+
+ -- filter default
+ local default = option[4]
+ if type(default) == "string" then
+ option[4] = interp:filter():handle(default)
+ end
+ end
+ end
+
-- main?
if taskinfo.category == "main" then
menu.main = taskinfo.menu