local plugin = {}
local err = require("err")
local e2lib = require("e2lib")
+local strict = require("strict")
--- plugin descriptor
-- @class table
local function load_plugin(dir, p, ctx)
local e = err.new("loading plugin failed: %s", p)
local plugin_file = string.format("%s/%s", dir, p)
+
+ strict.declare(_G, {plugin_descriptor = {}})
+
local chunk, msg = loadfile(plugin_file)
if not chunk then
return false, e:append("%s", msg)
plugin_file)
end
local pd = plugin_descriptor
+
+ strict.undeclare(_G, {plugin_descriptor = {}})
+
if type(pd.description) ~= "string" then
e:append("description missing in plugin descriptor")
end
end
end
-return plugin
+return strict.lock(plugin)
-- vim:sw=4:sts=4:et: