Comparison

core/modulemanager.lua @ 3598:48ebea937260

modulemanager: Return an error when loading a module on a non-existent host, don't create the host. Removes dependecy on componentmanager.
author Waqas Hussain <waqas20@gmail.com>
date Wed, 10 Nov 2010 20:14:33 +0500
parent 3596:bbeba9f2acf8
child 3608:ae0f83feaff4
comparison
equal deleted inserted replaced
3597:8090880f0e18 3598:48ebea937260
89 -- 89 --
90 90
91 function load(host, module_name, config) 91 function load(host, module_name, config)
92 if not (host and module_name) then 92 if not (host and module_name) then
93 return nil, "insufficient-parameters"; 93 return nil, "insufficient-parameters";
94 elseif not hosts[host] then
95 return nil, "unknown-host";
94 end 96 end
95 97
96 if not modulemap[host] then 98 if not modulemap[host] then
97 modulemap[host] = {}; 99 modulemap[host] = {};
98 end 100 end
116 118
117 local pluginenv = setmetatable({ module = api_instance }, { __index = _G }); 119 local pluginenv = setmetatable({ module = api_instance }, { __index = _G });
118 api_instance.environment = pluginenv; 120 api_instance.environment = pluginenv;
119 121
120 setfenv(mod, pluginenv); 122 setfenv(mod, pluginenv);
121 if not hosts[host] then
122 local create_component = _G.require "core.componentmanager".create_component;
123 hosts[host] = create_component(host);
124 log("debug", "Created new component: %s", host);
125 end
126 hosts[host].modules = modulemap[host]; 123 hosts[host].modules = modulemap[host];
127 modulemap[host][module_name] = pluginenv; 124 modulemap[host][module_name] = pluginenv;
128 125
129 local success, err = pcall(mod); 126 local success, err = pcall(mod);
130 if success then 127 if success then