diff options
author | Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> | 2013-02-08 06:59:45 +0000 |
---|---|---|
committer | Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> | 2013-02-08 06:59:45 +0000 |
commit | b9ebf814656849f6d8b0ba96a0d24dc09597d4aa (patch) | |
tree | aa31887c4a3b935102504940c9c86f51c849ce4b | |
parent | ae493bcd1ae74d4a79aa03e4eccd8bbd90c06ca8 (diff) | |
download | awall-b9ebf814656849f6d8b0ba96a0d24dc09597d4aa.tar.bz2 awall-b9ebf814656849f6d8b0ba96a0d24dc09597d4aa.tar.xz |
corrected processing order of module contents
-rw-r--r-- | awall/init.lua | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/awall/init.lua b/awall/init.lua index 645f3d6..04c2fc4 100644 --- a/awall/init.lua +++ b/awall/init.lua @@ -30,11 +30,15 @@ function loadmodules(path) achains = {} local function readmetadata(mod) - for name, target in pairs(mod.export or {}) do events[name] = target end + local export = mod.export or {} + for name, target in pairs(export) do events[name] = target end + for name, opts in pairs(mod.achains or {}) do assert(not achains[name]) achains[name] = opts end + + return awall.util.keys(export) end readmetadata(model) @@ -45,19 +49,20 @@ function loadmodules(path) local modules = {} for modfile in lfs.dir((path or '/usr/share/lua/5.1')..'/awall/modules') do if stringy.endswith(modfile, '.lua') then - table.insert(modules, string.sub(modfile, 1, -5)) + table.insert(modules, 'awall.modules.'..string.sub(modfile, 1, -5)) end end table.sort(modules) + + local imported = {} for i, name in ipairs(modules) do - local fname = 'awall.modules.'..name - require(fname) - readmetadata(package.loaded[fname]) + require(name) + awall.util.extend(imported, readmetadata(package.loaded[name])) end lfs.chdir(cdir) - events['%modules'] = {before=modules} + events['%modules'] = {before=imported} procorder = awall.dependency.order(events) end |