prosodyctl, util.pluginloader: Remove support for storing plugins in the data store...
[prosody.git] / util / pluginloader.lua
1 -- Prosody IM
2 -- Copyright (C) 2008-2010 Matthew Wild
3 -- Copyright (C) 2008-2010 Waqas Hussain
4 -- 
5 -- This project is MIT/X11 licensed. Please see the
6 -- COPYING file in the source package for more information.
7 --
8
9
10 local plugin_dir = CFG_PLUGINDIR or "./plugins/";
11
12 local io_open, os_time = io.open, os.time;
13 local loadstring, pairs = loadstring, pairs;
14
15 local datamanager = require "util.datamanager";
16
17 module "pluginloader"
18
19 local function load_file(name)
20         local file, err = io_open(plugin_dir..name);
21         if not file then return file, err; end
22         local content = file:read("*a");
23         file:close();
24         return content, name;
25 end
26
27 function load_resource(plugin, resource, loader)
28         if not resource then
29                 resource = "mod_"..plugin..".lua";
30         end
31         loader = loader or load_file;
32
33         local content, err = loader(plugin.."/"..resource);
34         if not content then content, err = loader(resource); end
35         -- TODO add support for packed plugins
36         
37         return content, err;
38 end
39
40 function load_code(plugin, resource)
41         local content, err = load_resource(plugin, resource);
42         if not content then return content, err; end
43         return loadstring(content, "@"..err);
44 end
45
46 return _M;