aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWaqas Hussain <waqas20@gmail.com>2009-06-14 21:01:30 +0500
committerWaqas Hussain <waqas20@gmail.com>2009-06-14 21:01:30 +0500
commit84d3a71ab244b5b0cf982c2e041d85a06fd1bfa4 (patch)
treed9072ddeee02f399334cf5252297e6320126cdb5
parent41134c93cef8b157053c11ffef215a3bf8351f1d (diff)
downloadprosody-84d3a71ab244b5b0cf982c2e041d85a06fd1bfa4.tar.gz
prosody-84d3a71ab244b5b0cf982c2e041d85a06fd1bfa4.zip
util.pluginloader: Initial commit - a plugin resource loader
-rw-r--r--util/pluginloader.lua33
1 files changed, 33 insertions, 0 deletions
diff --git a/util/pluginloader.lua b/util/pluginloader.lua
new file mode 100644
index 00000000..1bf22f62
--- /dev/null
+++ b/util/pluginloader.lua
@@ -0,0 +1,33 @@
+
+local plugin_dir = CFG_PLUGINDIR or "./plugins/";
+
+local io_open = io.open;
+local loadstring = loadstring;
+
+module "pluginloader"
+
+local function load_file(name)
+ local file, err = io_open(plugin_dir..name);
+ if not file then return file, err; end
+ local content = file:read("*a");
+ file:close();
+ return content, name;
+end
+
+function load_resource(plugin, resource)
+ if not resource then
+ resource = "mod_"..plugin..".lua";
+ end
+ local content, err = load_file(plugin.."/"..resource);
+ if not content then content, err = load_file(resource); end
+ -- TODO add support for packed plugins
+ return content, err;
+end
+
+function load_code(plugin, resource)
+ local content, err = load_resource(plugin, resource);
+ if not content then return content, err; end
+ return loadstring(content, err), err;
+end
+
+return _M;