summaryrefslogtreecommitdiff
path: root/xmake/core/base/sandbox.lua
diff options
context:
space:
mode:
authorruki <[email protected]>2016-02-01 11:36:44 +0800
committerruki <[email protected]>2016-02-15 19:10:26 +0800
commit4d9ea35a4cc8e4a2ac0d7e2633f088ca0be7e7f1 (patch)
treed9e03245368fce5bdf56fce6ef2a272c95a95913 /xmake/core/base/sandbox.lua
parentdef096cfe9e22d363dffa29cd02c134778e62966 (diff)
load builtin modules for sandbox
Diffstat (limited to 'xmake/core/base/sandbox.lua')
-rw-r--r--xmake/core/base/sandbox.lua38
1 files changed, 27 insertions, 11 deletions
diff --git a/xmake/core/base/sandbox.lua b/xmake/core/base/sandbox.lua
index 2689c9dc5..37c9edab7 100644
--- a/xmake/core/base/sandbox.lua
+++ b/xmake/core/base/sandbox.lua
@@ -76,7 +76,7 @@ end
function sandbox._api_builtin_import(self, module)
-- import
- return require("modules/" .. module)
+ return require("sandbox/" .. module)
end
-- register api
@@ -113,18 +113,34 @@ function sandbox._init()
end
end
- -- register the builtin interfaces
- self:_api_register("import", sandbox._api_builtin_import)
+ -- load builtin module files
+ local builtin_module_files = os.match(path.join(xmake._CORE_DIR, "sandbox/builtin/*.lua"))
+ if builtin_module_files then
+ for _, builtin_module_file in ipairs(builtin_module_files) do
+
+ -- the module name
+ local module_name = path.basename(builtin_module_file)
+ assert(module_name)
+
+ -- load script
+ local script = loadfile(builtin_module_file)
+ if script then
+
+ -- load module
+ local ok, results = xpcall(script, debug.traceback)
+ if not ok then
+ utils.error(results)
+ utils.abort()
+ end
- -- register the builtin interfaces for lua
- self:_api_register_builtin("print", print)
- self:_api_register_builtin("pairs", pairs)
- self:_api_register_builtin("ipairs", ipairs)
+ -- register module
+ self:_api_register_builtin(module_name, results)
+ end
+ end
+ end
- -- register the builtin modules for lua
- self:_api_register_builtin("path", path)
- self:_api_register_builtin("table", table)
- self:_api_register_builtin("string", string)
+ -- register import() for importing the extensional sandbox modules
+ self:_api_register("import", sandbox._api_builtin_import)
-- ok?
return self