Software / code / prosody
Comparison
core/modulemanager.lua @ 12253:57d35fcde488
modulemanager, moduleapi: Switch to new pluginloader interface
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Fri, 04 Feb 2022 14:11:46 +0000 |
| parent | 12146:9c69c062d6b7 |
| child | 12254:5b0c8e499288 |
comparison
equal
deleted
inserted
replaced
| 12252:4bfe658415a0 | 12253:57d35fcde488 |
|---|---|
| 50 local _G = _G; | 50 local _G = _G; |
| 51 | 51 |
| 52 local _ENV = nil; | 52 local _ENV = nil; |
| 53 -- luacheck: std none | 53 -- luacheck: std none |
| 54 | 54 |
| 55 local loader = pluginloader.init({ | |
| 56 }); | |
| 57 | |
| 55 local load_modules_for_host, load, unload, reload, get_module, get_items; | 58 local load_modules_for_host, load, unload, reload, get_module, get_items; |
| 56 local get_modules, is_loaded, module_has_method, call_module_method; | 59 local get_modules, is_loaded, module_has_method, call_module_method; |
| 57 | 60 |
| 58 -- [host] = { [module] = module_env } | 61 -- [host] = { [module] = module_env } |
| 59 local modulemap = { ["*"] = {} }; | 62 local modulemap = { ["*"] = {} }; |
| 182 , { __index = api }); | 185 , { __index = api }); |
| 183 | 186 |
| 184 local pluginenv = setmetatable({ module = api_instance }, { __index = _G }); | 187 local pluginenv = setmetatable({ module = api_instance }, { __index = _G }); |
| 185 api_instance.environment = pluginenv; | 188 api_instance.environment = pluginenv; |
| 186 | 189 |
| 187 local mod, err = pluginloader.load_code(module_name, nil, pluginenv); | 190 local mod, err = loader:load_code(module_name, nil, pluginenv); |
| 188 if not mod then | 191 if not mod then |
| 189 log("error", "Unable to load module '%s': %s", module_name or "nil", err or "nil"); | 192 log("error", "Unable to load module '%s': %s", module_name or "nil", err or "nil"); |
| 190 api_instance:set_status("error", "Failed to load (see log)"); | 193 api_instance:set_status("error", "Failed to load (see log)"); |
| 191 return nil, err; | 194 return nil, err; |
| 192 end | 195 end |
| 269 | 272 |
| 270 local function do_reload_module(host, name) | 273 local function do_reload_module(host, name) |
| 271 local mod = get_module(host, name); | 274 local mod = get_module(host, name); |
| 272 if not mod then return nil, "module-not-loaded"; end | 275 if not mod then return nil, "module-not-loaded"; end |
| 273 | 276 |
| 274 local _mod, err = pluginloader.load_code(name); -- checking for syntax errors | 277 local _mod, err = loader:load_code(name); -- checking for syntax errors |
| 275 if not _mod then | 278 if not _mod then |
| 276 log("error", "Unable to load module '%s': %s", name or "nil", err or "nil"); | 279 log("error", "Unable to load module '%s': %s", name or "nil", err or "nil"); |
| 277 return nil, err; | 280 return nil, err; |
| 278 end | 281 end |
| 279 | 282 |
| 393 get_items = get_items; | 396 get_items = get_items; |
| 394 get_modules = get_modules; | 397 get_modules = get_modules; |
| 395 is_loaded = is_loaded; | 398 is_loaded = is_loaded; |
| 396 module_has_method = module_has_method; | 399 module_has_method = module_has_method; |
| 397 call_module_method = call_module_method; | 400 call_module_method = call_module_method; |
| 401 | |
| 402 loader = loader; | |
| 398 }; | 403 }; |