Software /
code /
prosody
Comparison
util/pluginloader.lua @ 4185:3ff25f9adde7
util.pluginloader: Rewritten resource loading to be cleaner, and added support for prosody-modules directory layout. "/" in plugin names is no longer supported.
author | Waqas Hussain <waqas20@gmail.com> |
---|---|
date | Tue, 22 Feb 2011 21:47:38 +0500 |
parent | 4183:d899a847867e |
child | 5021:85b2689dbcfe |
comparison
equal
deleted
inserted
replaced
4184:7e3a570f33f4 | 4185:3ff25f9adde7 |
---|---|
17 local io_open, os_time = io.open, os.time; | 17 local io_open, os_time = io.open, os.time; |
18 local loadstring, pairs = loadstring, pairs; | 18 local loadstring, pairs = loadstring, pairs; |
19 | 19 |
20 module "pluginloader" | 20 module "pluginloader" |
21 | 21 |
22 local function load_file(name) | 22 local function load_file(names) |
23 local file, err, path; | 23 local file, err, path; |
24 for i=1,#plugin_dir do | 24 for i=1,#plugin_dir do |
25 path = plugin_dir[i]..name; | 25 for j=1,#names do |
26 file, err = io_open(path); | 26 path = plugin_dir[i]..names[j]; |
27 if file then break; end | 27 file, err = io_open(path); |
28 if file then | |
29 local content = file:read("*a"); | |
30 file:close(); | |
31 return content, path; | |
32 end | |
33 end | |
28 end | 34 end |
29 if not file then return file, err; end | 35 return file, err; |
30 local content = file:read("*a"); | |
31 file:close(); | |
32 return content, path; | |
33 end | 36 end |
34 | 37 |
35 function load_resource(plugin, resource) | 38 function load_resource(plugin, resource) |
36 local path, name = plugin:match("([^/]*)/?(.*)"); | 39 resource = resource or "mod_"..plugin..".lua"; |
37 if name == "" then | |
38 if not resource then | |
39 resource = "mod_"..plugin..".lua"; | |
40 end | |
41 | 40 |
42 local content, err = load_file(plugin.."/"..resource); | 41 local names = { |
43 if not content then content, err = load_file(resource); end | 42 "mod_"..plugin.."/"..plugin.."/"..resource; -- mod_hello/hello/mod_hello.lua |
44 | 43 "mod_"..plugin.."/"..resource; -- mod_hello/mod_hello.lua |
45 return content, err; | 44 plugin.."/"..resource; -- hello/mod_hello.lua |
46 else | 45 resource; -- mod_hello.lua |
47 if not resource then | 46 }; |
48 resource = "mod_"..name..".lua"; | |
49 end | |
50 | 47 |
51 local content, err = load_file(plugin.."/"..resource); | 48 return load_file(names); |
52 if not content then content, err = load_file(path.."/"..resource); end | |
53 | |
54 return content, err; | |
55 end | |
56 end | 49 end |
57 | 50 |
58 function load_code(plugin, resource) | 51 function load_code(plugin, resource) |
59 local content, err = load_resource(plugin, resource); | 52 local content, err = load_resource(plugin, resource); |
60 if not content then return content, err; end | 53 if not content then return content, err; end |