diff options
| author | ruki <[email protected]> | 2016-12-26 08:59:06 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2017-01-06 17:20:08 +0800 |
| commit | cf15bd5f7162d6f009ff749e4fe6a29bd22cdda2 (patch) | |
| tree | 82e72a1f6a2a5a84b3cdc8b1ee9d00eeab726a12 | |
| parent | 41b436bf13e65ea0a9eb3e826d944a626e387df2 (diff) | |
define apis for all scopes again
| -rwxr-xr-x | README.md | 2 | ||||
| -rwxr-xr-x | README_zh.md | 2 | ||||
| -rw-r--r-- | xmake/core/base/interpreter.lua | 20 | ||||
| -rw-r--r-- | xmake/core/language/language.lua | 22 | ||||
| -rw-r--r-- | xmake/core/platform/platform.lua | 50 | ||||
| -rw-r--r-- | xmake/core/project/project.lua | 147 | ||||
| -rw-r--r-- | xmake/core/project/task.lua | 30 | ||||
| -rw-r--r-- | xmake/core/project/template.lua | 33 |
8 files changed, 163 insertions, 143 deletions
@@ -1,6 +1,6 @@ # A make-like build utility based on Lua -[](https://travis-ci.org/waruqi/xmake) [](https://ci.appveyor.com/project/waruqi/xmake) [](https://gitter.im/waruqi/tboox?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [](http://xmake.io/pages/donation.html#donate) +[](https://travis-ci.org/tboox/xmake) [](https://ci.appveyor.com/project/tboox/xmake) [](https://gitter.im/waruqi/tboox?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [](http://xmake.io/pages/donation.html#donate) ## Introduction ([中文](/README_zh.md)) diff --git a/README_zh.md b/README_zh.md index 26b98e852..2cabac97e 100755 --- a/README_zh.md +++ b/README_zh.md @@ -1,6 +1,6 @@ # 一个基于Lua的轻量级跨平台自动构建工具 -[](https://travis-ci.org/waruqi/xmake) [](https://ci.appveyor.com/project/waruqi/xmake) [](https://gitter.im/waruqi/tboox?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [](http://xmake.io/pages/donation.html#donate) +[](https://travis-ci.org/tboox/xmake) [](https://ci.appveyor.com/project/tboox/xmake) [](https://gitter.im/waruqi/tboox?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [](http://xmake.io/pages/donation.html#donate) ## 简介 diff --git a/xmake/core/base/interpreter.lua b/xmake/core/base/interpreter.lua index af21e9b82..86f57ebb2 100644 --- a/xmake/core/base/interpreter.lua +++ b/xmake/core/base/interpreter.lua @@ -1121,14 +1121,22 @@ end function interpreter:api_define(apis) -- register language apis + local scopes = {} for apitype, apifuncs in pairs(apis) do for _, apifunc in ipairs(apifuncs) do -- get api function + local apiscope = nil + local funcname = nil apifunc = apifunc:split('.') - local apiscope = apifunc[1] - local funcname = apifunc[2] - assert(apiscope and funcname) + assert(apifunc) + if #apifunc == 2 then + apiscope = apifunc[1] + funcname = apifunc[2] + else + funcname = apifunc[1] + end + assert(funcname) -- get function prefix local prefix = nil @@ -1148,6 +1156,12 @@ function interpreter:api_define(apis) if not register then os.raise("interp:api_register_%s_%s() is unknown!", prefix, apitype) end + + -- register scope first + if apiscope ~= nil and not scopes[apiscope] then + self:api_register_scope(apiscope) + scopes[apiscope] = true + end -- register api register(self, apiscope, funcname) diff --git a/xmake/core/language/language.lua b/xmake/core/language/language.lua index 3800647cc..f1134d614 100644 --- a/xmake/core/language/language.lua +++ b/xmake/core/language/language.lua @@ -154,14 +154,20 @@ function language._interpreter() local interp = interpreter.new() assert(interp) - -- register api: language() - interp:api_register_scope("language") - - -- register api: on_load() - interp:api_register_on_script("language", "load") - - -- register api: set_values() to language - interp:api_register_set_values("language", "sourcekinds") + -- define apis + interp:api_define + { + values = + { + -- language.set_xxx + "language.set_sourcekinds" + } + , script = + { + -- language.on_xxx + "language.on_load" + } + } -- save interpreter language._INTERPRETER = interp diff --git a/xmake/core/platform/platform.lua b/xmake/core/platform/platform.lua index 263f2e6e0..a33852866 100644 --- a/xmake/core/platform/platform.lua +++ b/xmake/core/platform/platform.lua @@ -206,35 +206,27 @@ function platform._interpreter() local interp = interpreter.new() assert(interp) - -- register api: platform() - interp:api_register_scope("platform") - - -- register api: set_os() - interp:api_register_set_values("platform", "os") - - -- register api: set_hosts() - interp:api_register_set_values("platform", "hosts") - - -- register api: set_archs() - interp:api_register_set_values("platform", "archs") - - -- register api: set_menu() - interp:api_register_set_values("platform", "menu") - - -- register api: set_checker() - interp:api_register_set_values("platform", "checker") - - -- register api: set_tooldirs() - interp:api_register_set_values("platform", "tooldirs") - - -- register api: set_environment() - interp:api_register_set_values("platform", "environment") - - -- register api: set_installer() - interp:api_register_set_values("platform", "installer") - - -- register api: on_load() - interp:api_register_on_script("platform", "load") + -- define apis + interp:api_define + { + values = + { + -- platform.set_xxx + "platform.set_os" + , "platform.set_hosts" + , "platform.set_archs" + , "platform.set_menu" + , "platform.set_checker" + , "platform.set_tooldirs" + , "platform.set_environment" + , "platform.set_installer" + } + , script = + { + -- platform.on_xxx + "platform.on_load" + } + } -- save interpreter platform._INTERPRETER = interp diff --git a/xmake/core/project/project.lua b/xmake/core/project/project.lua index 9caacffbc..044cbdff3 100644 --- a/xmake/core/project/project.lua +++ b/xmake/core/project/project.lua @@ -296,74 +296,80 @@ function project._interpreter() -- set root scope interp:rootscope_set("target") - -- register api: target(), option() and task() - interp:api_register_scope("target", "option", "task") - -- define apis for language interp:api_define(language.apis()) - -- register api: set_values() to target - interp:api_register_set_values("target", "kind" - , "version" - , "project" - , "strip" - , "options" - , "symbols" - , "warnings" - , "optimize" - , "languages") - - -- register api: add_values() to target - interp:api_register_add_values("target", "deps" - , "options" - , "languages" - , "vectorexts") - - -- register api: set_pathes() to target - interp:api_register_set_pathes("target", "targetdir" - , "objectdir") - - -- register api: add_pathes() to target - interp:api_register_add_pathes("target", "files") - - - -- register api: on_action() to target - interp:api_register_on_script("target", "run" - , "build" - , "clean" - , "package" - , "install" - , "uninstall") - - -- register api: before_action() to target - interp:api_register_before_script("target", "run" - , "build" - , "clean" - , "package" - , "install" - , "uninstall") - - -- register api: after_action() to target - interp:api_register_after_script("target", "run" - , "build" - , "clean" - , "package" - , "install" - , "uninstall") - - -- register api: set_values() to option - interp:api_register_set_values("option", "default" - , "showmenu" - , "category" - , "warnings" - , "optimize" - , "languages" - , "description") - - -- register api: add_values() to option - interp:api_register_add_values("option", "vectorexts" - , "bindings" - , "rbindings") + -- define apis for target, option and task + interp:api_define + { + values = + { + -- target.set_xxx + "target.set_kind" + , "target.set_version" + , "target.set_project" + , "target.set_strip" + , "target.set_options" + , "target.set_symbols" + , "target.set_warnings" + , "target.set_optimize" + , "target.set_languages" + -- target.add_xxx + , "target.add_deps" + , "target.add_options" + , "target.add_languages" + , "target.add_vectorexts" + -- option.set_xxx + , "option.set_default" + , "option.set_showmenu" + , "option.set_category" + , "option.set_warnings" + , "option.set_optimize" + , "option.set_languages" + , "option.set_description" + -- option.add_xxx + , "option.add_vectorexts" + , "option.add_bindings" + , "option.add_rbindings" + -- task.set_xxx + , "task.set_category" + , "task.set_menu" + } + , pathes = + { + -- target.set_xxx + "target.set_targetdir" + , "target.set_objectdir" + -- target.add_xxx + , "target.add_files" + } + , script = + { + -- target.on_xxx + "target.on_run" + , "target.on_build" + , "target.on_clean" + , "target.on_package" + , "target.on_install" + , "target.on_uninstall" + -- target.before_xxx + , "target.before_run" + , "target.before_build" + , "target.before_clean" + , "target.before_package" + , "target.before_install" + , "target.before_uninstall" + -- target.after_xxx + , "target.after_run" + , "target.after_build" + , "target.after_clean" + , "target.after_package" + , "target.after_install" + , "target.after_uninstall" + -- target.on_xxx + , "task.on_run" + } + } -- register api: add_cfunc() and add_cfuncs() to target interp:api_register("target", "add_cfunc", project._api_add_cfunc) @@ -376,17 +382,6 @@ function project._interpreter() -- register api: add_packages() to target interp:api_register_builtin("add_packages", interp:_api_within_scope("target", "add_options")) - -- register api: set_category() - -- - -- category: main, action, plugin, task (default) - interp:api_register_set_values("task", "category") - - -- register api: set_menu() - interp:api_register_set_values("task", "menu") - - -- register api: on_run() - interp:api_register_on_script("task", "run") - -- register api: is_xxx() to root interp:api_register(nil, "is_os", project._api_is_os) interp:api_register(nil, "is_kind", project._api_is_kind) diff --git a/xmake/core/project/task.lua b/xmake/core/project/task.lua index a0174e9e8..1d1bf37dd 100644 --- a/xmake/core/project/task.lua +++ b/xmake/core/project/task.lua @@ -160,20 +160,22 @@ function task._interpreter() -- init interpreter local interp = interpreter.new() assert(interp) - - -- register api: task() - interp:api_register_scope("task") - - -- register api: set_category() - -- - -- category: main, action, plugin, task (default) - interp:api_register_set_values("task", "category") - - -- register api: set_menu() - interp:api_register_set_values("task", "menu") - - -- register api: on_run() - interp:api_register_on_script("task", "run") + + -- define apis + interp:api_define + { + values = + { + -- task.set_xxx + "task.set_category" -- main, action, plugin, task (default) + , "task.set_menu" + } + , script = + { + -- task.on_xxx + "task.on_run" + } + } -- set filter interp:filter_set(filter.new(function (variable) diff --git a/xmake/core/project/template.lua b/xmake/core/project/template.lua index d80283677..5830174d0 100644 --- a/xmake/core/project/template.lua +++ b/xmake/core/project/template.lua @@ -47,17 +47,28 @@ function template._interpreter() local interp = interpreter.new() assert(interp) - -- register api: set_description() and set_projectdir() - interp:api_register_set_values(nil, "description", "projectdir") - - -- register api: add_macrofiles() - interp:api_register_add_values(nil, "macrofiles") - - -- register api: add_macros() - interp:api_register_add_keyvalues(nil, "macros") - - -- register api: on_create() - interp:api_register_on_script(nil, "create") + -- define apis (only root scope) + interp:api_define + { + values = + { + -- set_xxx + "set_description" + , "set_projectdir" + -- add_xxx + , "add_macrofiles" + } + , keyvalues = + { + -- add_xxx + "add_macros" + } + , script = + { + -- on_xxx + "on_create" + } + } -- save interpreter template._INTERPRETER = interp |
