core/configmanager.lua

changeset 3610
2084959d4096
parent 3609
954b1159f2f3
child 3613
f617718d2221
equal deleted inserted replaced
3609:954b1159f2f3 3610:2084959d4096
143 local env; 143 local env;
144 -- The ' = true' are needed so as not to set off __newindex when we assign the functions below 144 -- The ' = true' are needed so as not to set off __newindex when we assign the functions below
145 env = setmetatable({ 145 env = setmetatable({
146 Host = true, host = true, VirtualHost = true, 146 Host = true, host = true, VirtualHost = true,
147 Component = true, component = true, 147 Component = true, component = true,
148 Include = true, include = true, RunScript = dofile }, { 148 Include = true, include = true, RunScript = true }, {
149 __index = function (t, k) 149 __index = function (t, k)
150 return rawget(_G, k) or 150 return rawget(_G, k) or
151 function (settings_table) 151 function (settings_table)
152 config[__currenthost or "*"][k] = settings_table; 152 config[__currenthost or "*"][k] = settings_table;
153 end; 153 end;
203 203
204 function env.Include(file) 204 function env.Include(file)
205 local f, err = io.open(file); 205 local f, err = io.open(file);
206 if f then 206 if f then
207 local data = f:read("*a"); 207 local data = f:read("*a");
208 local file = resolve_relative_path(filename:gsub("[^"..path_sep.."]+$", ""), file);
208 local ok, err = parsers.lua.load(data, file); 209 local ok, err = parsers.lua.load(data, file);
209 if not ok then error(err:gsub("%[string.-%]", file), 0); end 210 if not ok then error(err:gsub("%[string.-%]", file), 0); end
210 end 211 end
211 if not f then error("Error loading included "..file..": "..err, 0); end 212 if not f then error("Error loading included "..file..": "..err, 0); end
212 return f, err; 213 return f, err;
213 end 214 end
214 env.include = env.Include; 215 env.include = env.Include;
215 216
217 function env.RunScript(file)
218 return dofile(resolve_relative_path(filename:gsub("[^"..path_sep.."]+$", ""), file));
219 end
220
216 local chunk, err = loadstring(data, "@"..filename); 221 local chunk, err = loadstring(data, "@"..filename);
217 222
218 if not chunk then 223 if not chunk then
219 return nil, err; 224 return nil, err;
220 end 225 end

mercurial