-- @return an error object on failure
-- list of plugin descriptors
-plugins = {}
+local plugins = {}
--[[ example plugin descriptor:
-- plugin = {
return true, nil
end
---- initialize a plugin
--- @param pd table: plugin descriptor
--- @return bool
--- @return an error object on failure
-local function init_plugin(pd)
- return pd.init(pd.ctx)
-end
-
---- deinitialize a plugin
--- @param pd table: plugin descriptor
--- @return bool
-local function exit_plugin(pd)
- return pd.exit(pd.ctx)
-end
-
--- load plugins from a directory, and apply the plugin context
-- @param dir string: directory
-- @param ctx table: plugin context
function plugin.init_plugins()
local e = err.new("initializing plugins failed")
for _, pd in ipairs(plugins) do
- local rc, re = init_plugin(pd)
+ local rc, re = pd.init(pd.ctx)
if not rc then
return false, e:cat(re)
end
function plugin.exit_plugins()
local e = err.new("deinitializing plugins failed")
for _, pd in ipairs(plugins) do
- local rc, re = exit_plugin(pd)
+ local rc, re = pd.exit(pd.ctx)
if not rc then
return false, e:cat(re)
end