author | Kim Alvefur <zash@zash.se> |
Sat, 22 Jul 2023 16:20:36 +0200 | |
changeset 13248 | 2902c54f45a6 |
parent 12953 | 2f61ebcf37c0 |
permissions | -rw-r--r-- |
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 |
}) |