core.modulemanager, core.moduleapi: Hack around dependency loop
[prosody.git] / core / moduleapi.lua
index 8b477140da0b64c19bdd78ee2fdc25727caf4815..e5f86b377f3995b41b154b1404e649275808bc55 100644 (file)
@@ -7,7 +7,7 @@
 --
 
 local config = require "core.configmanager";
-local modulemanager = require "modulemanager"; -- This is necessary to avoid require loops
+local modulemanager; -- This gets set from modulemanager
 local array = require "util.array";
 local set = require "util.set";
 local logger = require "util.logger";
@@ -19,6 +19,7 @@ local t_insert, t_remove, t_concat = table.insert, table.remove, table.concat;
 local error, setmetatable, type = error, setmetatable, type;
 local ipairs, pairs, select, unpack = ipairs, pairs, select, unpack;
 local tonumber, tostring = tonumber, tostring;
+local require = require;
 
 local prosody = prosody;
 local hosts = prosody.hosts;
@@ -366,7 +367,10 @@ function api:load_resource(path, mode)
 end
 
 function api:open_store(name, type)
-       return storagemanager.open(self.host, name or self.name, type);
+       return require"core.storagemanager".open(self.host, name or self.name, type);
 end
 
-return api;
+return function (mm)
+       modulemanager = mm;
+       return api;
+end