Mercurial > prosody-hg
comparison util/pluginloader.lua @ 4121:ea7e3f22f898
util.pluginloader: Add support for multiple plugin directories.
| author | Waqas Hussain <waqas20@gmail.com> |
|---|---|
| date | Fri, 21 Jan 2011 04:35:49 +0500 |
| parents | 7170aaeb582d |
| children | 3c1b153c2856 |
comparison
equal
deleted
inserted
replaced
| 4120:d62a2861f1f9 | 4121:ea7e3f22f898 |
|---|---|
| 4 -- | 4 -- |
| 5 -- This project is MIT/X11 licensed. Please see the | 5 -- This project is MIT/X11 licensed. Please see the |
| 6 -- COPYING file in the source package for more information. | 6 -- COPYING file in the source package for more information. |
| 7 -- | 7 -- |
| 8 | 8 |
| 9 | 9 local dir_sep, path_sep = package.config:match("^(%S+)%s(%S+)"); |
| 10 local plugin_dir = CFG_PLUGINDIR or "./plugins/"; | 10 local plugin_dir = {}; |
| 11 for path in (CFG_PLUGINDIR or "./plugins/"):gsub("[/\\]", dir_sep):gmatch("[^"..path_sep.."]+") do | |
| 12 path = path..dir_sep; -- add path separator to path end | |
| 13 path = path:gsub(dir_sep..dir_sep.."+", dir_sep); -- coalesce multiple separaters | |
| 14 plugin_dir[#plugin_dir + 1] = path; | |
| 15 end | |
| 11 | 16 |
| 12 local io_open, os_time = io.open, os.time; | 17 local io_open, os_time = io.open, os.time; |
| 13 local loadstring, pairs = loadstring, pairs; | 18 local loadstring, pairs = loadstring, pairs; |
| 14 | 19 |
| 15 module "pluginloader" | 20 module "pluginloader" |
| 16 | 21 |
| 17 local function load_file(name) | 22 local function load_file(name) |
| 18 local file, err = io_open(plugin_dir..name); | 23 local file, err; |
| 24 for i=1,#plugin_dir do | |
| 25 file, err = io_open(plugin_dir[i]..name); | |
| 26 if file then break; end | |
| 27 end | |
| 19 if not file then return file, err; end | 28 if not file then return file, err; end |
| 20 local content = file:read("*a"); | 29 local content = file:read("*a"); |
| 21 file:close(); | 30 file:close(); |
| 22 return content, name; | 31 return content, name; |
| 23 end | 32 end |
