Software /
code /
prosody
Comparison
util/pluginloader.lua @ 3233:8f78e8164032
prosodyctl, util.pluginloader: Remove support for storing plugins in the data store, and the addplugin command
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Fri, 11 Jun 2010 14:25:22 +0100 |
parent | 2925:692b3c6c5bd2 |
child | 3410:32b018eeeb3b |
comparison
equal
deleted
inserted
replaced
3225:90dc4afe7352 | 3233:8f78e8164032 |
---|---|
13 local loadstring, pairs = loadstring, pairs; | 13 local loadstring, pairs = loadstring, pairs; |
14 | 14 |
15 local datamanager = require "util.datamanager"; | 15 local datamanager = require "util.datamanager"; |
16 | 16 |
17 module "pluginloader" | 17 module "pluginloader" |
18 | |
19 local function load_from_datastore(name) | |
20 local content = datamanager.load(name, nil, "plugins"); | |
21 if not content or not content[1] then return nil, "Resource not found"; end | |
22 return content[1], name; | |
23 end | |
24 | 18 |
25 local function load_file(name) | 19 local function load_file(name) |
26 local file, err = io_open(plugin_dir..name); | 20 local file, err = io_open(plugin_dir..name); |
27 if not file then return file, err; end | 21 if not file then return file, err; end |
28 local content = file:read("*a"); | 22 local content = file:read("*a"); |
38 | 32 |
39 local content, err = loader(plugin.."/"..resource); | 33 local content, err = loader(plugin.."/"..resource); |
40 if not content then content, err = loader(resource); end | 34 if not content then content, err = loader(resource); end |
41 -- TODO add support for packed plugins | 35 -- TODO add support for packed plugins |
42 | 36 |
43 if not content and loader == load_file then | |
44 return load_resource(plugin, resource, load_from_datastore); | |
45 end | |
46 | |
47 return content, err; | 37 return content, err; |
48 end | |
49 | |
50 function store_resource(plugin, resource, content, metadata) | |
51 if not resource then | |
52 resource = "mod_"..plugin..".lua"; | |
53 end | |
54 local store = { content }; | |
55 if metadata then | |
56 for k,v in pairs(metadata) do | |
57 store[k] = v; | |
58 end | |
59 end | |
60 datamanager.store(plugin.."/"..resource, nil, "plugins", store); | |
61 end | 38 end |
62 | 39 |
63 function load_code(plugin, resource) | 40 function load_code(plugin, resource) |
64 local content, err = load_resource(plugin, resource); | 41 local content, err = load_resource(plugin, resource); |
65 if not content then return content, err; end | 42 if not content then return content, err; end |