diff options
Diffstat (limited to 'xmake/core/base/task.lua')
| -rw-r--r-- | xmake/core/base/task.lua | 38 |
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 |
