Software /
code /
prosody
File
loader.lua @ 13595:6fafe51df188
prosodyctl: adduser: use shell user:create() to provide the implementation
This allows user creation to happen inside the running Prosody process, which
improves a number of things - such as executing event handlers for user
creation, fixing issues and race conditions with some storage drivers, etc.
The intent is to do the same for the other prosodyctl commands, but this is
the first proof of concept for the approach.
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Tue, 07 Jan 2025 18:47:24 +0000 |
parent | 12949:2f61ebcf37c0 |
line wrap: on
line source
-- Allow for both require"util.foo" and require"prosody.util.foo" for a -- transition period while we update all require calls. if (...) == "prosody.loader" then if not package.path:find "prosody" then -- For require"util.foo" also look in paths equivalent to "prosody.util.foo" package.path = package.path:gsub("([^;]*)(?[^;]*)", "%1prosody/%2;%1%2"); package.cpath = package.cpath:gsub("([^;]*)(?[^;]*)", "%1prosody/%2;%1%2"); end else -- When requiring "prosody.x", also look for "x" for i = #package.searchers, 1, -1 do local search = package.searchers[i]; table.insert(package.searchers, i, function(module_name) local lib = module_name:match("^prosody%.(.*)$"); if lib then return search(lib); end end) end end -- Look for already loaded module with or without prefix setmetatable(package.loaded, { __index = function(loaded, module_name) local suffix = module_name:match("^prosody%.(.*)$"); if suffix then return rawget(loaded, suffix); end local prefixed = rawget(loaded, "prosody." .. module_name); if prefixed ~= nil then return prefixed; end end; })