Changeset

12948:29983f09c913

prosody.loader: Incorporate search path rewrite patch from Debian packages Nice to drop that patch. Will allow loading this to do something both when installed under a prosody directory or from a source checkout.
author Kim Alvefur <zash@zash.se>
date Fri, 17 Mar 2023 14:36:02 +0100
parents 12947:14a44b1a51d0
children 12949:2f61ebcf37c0
files loader.lua
diffstat 1 files changed, 20 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/loader.lua	Fri Mar 17 13:51:43 2023 +0100
+++ b/loader.lua	Fri Mar 17 14:36:02 2023 +0100
@@ -1,9 +1,21 @@
-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)
+-- 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