loader.lua
author Kim Alvefur <zash@zash.se>
Sun, 24 Mar 2024 21:32:00 +0100
changeset 13468 2dbc169aae6a
parent 12953 2f61ebcf37c0
permissions -rw-r--r--
util.startup: Abort before initialization of logging when started as root Prevents creation of log files owned by the root user which could be inaccessible once started correctly.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
12952
29983f09c913 prosody.loader: Incorporate search path rewrite patch from Debian packages
Kim Alvefur <zash@zash.se>
parents: 12951
diff changeset
     1
-- Allow for both require"util.foo" and require"prosody.util.foo" for a
29983f09c913 prosody.loader: Incorporate search path rewrite patch from Debian packages
Kim Alvefur <zash@zash.se>
parents: 12951
diff changeset
     2
-- transition period while we update all require calls.
29983f09c913 prosody.loader: Incorporate search path rewrite patch from Debian packages
Kim Alvefur <zash@zash.se>
parents: 12951
diff changeset
     3
29983f09c913 prosody.loader: Incorporate search path rewrite patch from Debian packages
Kim Alvefur <zash@zash.se>
parents: 12951
diff changeset
     4
if (...) == "prosody.loader" then
29983f09c913 prosody.loader: Incorporate search path rewrite patch from Debian packages
Kim Alvefur <zash@zash.se>
parents: 12951
diff changeset
     5
	if not package.path:find "prosody" then
29983f09c913 prosody.loader: Incorporate search path rewrite patch from Debian packages
Kim Alvefur <zash@zash.se>
parents: 12951
diff changeset
     6
		-- For require"util.foo" also look in paths equivalent to "prosody.util.foo"
29983f09c913 prosody.loader: Incorporate search path rewrite patch from Debian packages
Kim Alvefur <zash@zash.se>
parents: 12951
diff changeset
     7
		package.path = package.path:gsub("([^;]*)(?[^;]*)", "%1prosody/%2;%1%2");
29983f09c913 prosody.loader: Incorporate search path rewrite patch from Debian packages
Kim Alvefur <zash@zash.se>
parents: 12951
diff changeset
     8
		package.cpath = package.cpath:gsub("([^;]*)(?[^;]*)", "%1prosody/%2;%1%2");
29983f09c913 prosody.loader: Incorporate search path rewrite patch from Debian packages
Kim Alvefur <zash@zash.se>
parents: 12951
diff changeset
     9
	end
29983f09c913 prosody.loader: Incorporate search path rewrite patch from Debian packages
Kim Alvefur <zash@zash.se>
parents: 12951
diff changeset
    10
else
29983f09c913 prosody.loader: Incorporate search path rewrite patch from Debian packages
Kim Alvefur <zash@zash.se>
parents: 12951
diff changeset
    11
	-- When requiring "prosody.x", also look for "x"
29983f09c913 prosody.loader: Incorporate search path rewrite patch from Debian packages
Kim Alvefur <zash@zash.se>
parents: 12951
diff changeset
    12
	for i = #package.searchers, 1, -1 do
29983f09c913 prosody.loader: Incorporate search path rewrite patch from Debian packages
Kim Alvefur <zash@zash.se>
parents: 12951
diff changeset
    13
		local search = package.searchers[i];
29983f09c913 prosody.loader: Incorporate search path rewrite patch from Debian packages
Kim Alvefur <zash@zash.se>
parents: 12951
diff changeset
    14
		table.insert(package.searchers, i, function(module_name)
29983f09c913 prosody.loader: Incorporate search path rewrite patch from Debian packages
Kim Alvefur <zash@zash.se>
parents: 12951
diff changeset
    15
			local lib = module_name:match("^prosody%.(.*)$");
29983f09c913 prosody.loader: Incorporate search path rewrite patch from Debian packages
Kim Alvefur <zash@zash.se>
parents: 12951
diff changeset
    16
			if lib then
29983f09c913 prosody.loader: Incorporate search path rewrite patch from Debian packages
Kim Alvefur <zash@zash.se>
parents: 12951
diff changeset
    17
				return search(lib);
29983f09c913 prosody.loader: Incorporate search path rewrite patch from Debian packages
Kim Alvefur <zash@zash.se>
parents: 12951
diff changeset
    18
			end
29983f09c913 prosody.loader: Incorporate search path rewrite patch from Debian packages
Kim Alvefur <zash@zash.se>
parents: 12951
diff changeset
    19
		end)
29983f09c913 prosody.loader: Incorporate search path rewrite patch from Debian packages
Kim Alvefur <zash@zash.se>
parents: 12951
diff changeset
    20
	end
12951
14a44b1a51d0 prosody.loader: Allow loading modules under 'prosody' namespace (#1223)
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    21
end
12953
2f61ebcf37c0 prosody.loader: Ensure already loaded modules are found in old and new namespaces
Kim Alvefur <zash@zash.se>
parents: 12952
diff changeset
    22
2f61ebcf37c0 prosody.loader: Ensure already loaded modules are found in old and new namespaces
Kim Alvefur <zash@zash.se>
parents: 12952
diff changeset
    23
-- Look for already loaded module with or without prefix
2f61ebcf37c0 prosody.loader: Ensure already loaded modules are found in old and new namespaces
Kim Alvefur <zash@zash.se>
parents: 12952
diff changeset
    24
setmetatable(package.loaded, {
2f61ebcf37c0 prosody.loader: Ensure already loaded modules are found in old and new namespaces
Kim Alvefur <zash@zash.se>
parents: 12952
diff changeset
    25
	__index = function(loaded, module_name)
2f61ebcf37c0 prosody.loader: Ensure already loaded modules are found in old and new namespaces
Kim Alvefur <zash@zash.se>
parents: 12952
diff changeset
    26
		local suffix = module_name:match("^prosody%.(.*)$");
2f61ebcf37c0 prosody.loader: Ensure already loaded modules are found in old and new namespaces
Kim Alvefur <zash@zash.se>
parents: 12952
diff changeset
    27
		if suffix then
2f61ebcf37c0 prosody.loader: Ensure already loaded modules are found in old and new namespaces
Kim Alvefur <zash@zash.se>
parents: 12952
diff changeset
    28
			return rawget(loaded, suffix);
2f61ebcf37c0 prosody.loader: Ensure already loaded modules are found in old and new namespaces
Kim Alvefur <zash@zash.se>
parents: 12952
diff changeset
    29
		end
2f61ebcf37c0 prosody.loader: Ensure already loaded modules are found in old and new namespaces
Kim Alvefur <zash@zash.se>
parents: 12952
diff changeset
    30
		local prefixed = rawget(loaded, "prosody." .. module_name);
2f61ebcf37c0 prosody.loader: Ensure already loaded modules are found in old and new namespaces
Kim Alvefur <zash@zash.se>
parents: 12952
diff changeset
    31
		if prefixed ~= nil then
2f61ebcf37c0 prosody.loader: Ensure already loaded modules are found in old and new namespaces
Kim Alvefur <zash@zash.se>
parents: 12952
diff changeset
    32
			return prefixed;
2f61ebcf37c0 prosody.loader: Ensure already loaded modules are found in old and new namespaces
Kim Alvefur <zash@zash.se>
parents: 12952
diff changeset
    33
		end
2f61ebcf37c0 prosody.loader: Ensure already loaded modules are found in old and new namespaces
Kim Alvefur <zash@zash.se>
parents: 12952
diff changeset
    34
	end;
2f61ebcf37c0 prosody.loader: Ensure already loaded modules are found in old and new namespaces
Kim Alvefur <zash@zash.se>
parents: 12952
diff changeset
    35
})