Software /
code /
prosody
Annotate
loader.lua @ 13171:e2c3582ab9fa
util.jsonpointer: Silence Teal warning
It seems to think 'table' never has array items, but we don't know that.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Fri, 30 Jun 2023 15:02:26 +0200 |
parent | 12949:2f61ebcf37c0 |
rev | line source |
---|---|
12948
29983f09c913
prosody.loader: Incorporate search path rewrite patch from Debian packages
Kim Alvefur <zash@zash.se>
parents:
12947
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:
12947
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:
12947
diff
changeset
|
3 |
29983f09c913
prosody.loader: Incorporate search path rewrite patch from Debian packages
Kim Alvefur <zash@zash.se>
parents:
12947
diff
changeset
|
4 if (...) == "prosody.loader" then |
29983f09c913
prosody.loader: Incorporate search path rewrite patch from Debian packages
Kim Alvefur <zash@zash.se>
parents:
12947
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:
12947
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:
12947
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:
12947
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:
12947
diff
changeset
|
9 end |
29983f09c913
prosody.loader: Incorporate search path rewrite patch from Debian packages
Kim Alvefur <zash@zash.se>
parents:
12947
diff
changeset
|
10 else |
29983f09c913
prosody.loader: Incorporate search path rewrite patch from Debian packages
Kim Alvefur <zash@zash.se>
parents:
12947
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:
12947
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:
12947
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:
12947
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:
12947
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:
12947
diff
changeset
|
16 if lib then |
29983f09c913
prosody.loader: Incorporate search path rewrite patch from Debian packages
Kim Alvefur <zash@zash.se>
parents:
12947
diff
changeset
|
17 return search(lib); |
29983f09c913
prosody.loader: Incorporate search path rewrite patch from Debian packages
Kim Alvefur <zash@zash.se>
parents:
12947
diff
changeset
|
18 end |
29983f09c913
prosody.loader: Incorporate search path rewrite patch from Debian packages
Kim Alvefur <zash@zash.se>
parents:
12947
diff
changeset
|
19 end) |
29983f09c913
prosody.loader: Incorporate search path rewrite patch from Debian packages
Kim Alvefur <zash@zash.se>
parents:
12947
diff
changeset
|
20 end |
12947
14a44b1a51d0
prosody.loader: Allow loading modules under 'prosody' namespace (#1223)
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
21 end |
12949
2f61ebcf37c0
prosody.loader: Ensure already loaded modules are found in old and new namespaces
Kim Alvefur <zash@zash.se>
parents:
12948
diff
changeset
|
22 |
2f61ebcf37c0
prosody.loader: Ensure already loaded modules are found in old and new namespaces
Kim Alvefur <zash@zash.se>
parents:
12948
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:
12948
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:
12948
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:
12948
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:
12948
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:
12948
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:
12948
diff
changeset
|
29 end |
2f61ebcf37c0
prosody.loader: Ensure already loaded modules are found in old and new namespaces
Kim Alvefur <zash@zash.se>
parents:
12948
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:
12948
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:
12948
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:
12948
diff
changeset
|
33 end |
2f61ebcf37c0
prosody.loader: Ensure already loaded modules are found in old and new namespaces
Kim Alvefur <zash@zash.se>
parents:
12948
diff
changeset
|
34 end; |
2f61ebcf37c0
prosody.loader: Ensure already loaded modules are found in old and new namespaces
Kim Alvefur <zash@zash.se>
parents:
12948
diff
changeset
|
35 }) |