diff options
author | Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> | 2015-03-10 21:11:19 +0200 |
---|---|---|
committer | Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> | 2015-03-11 16:54:19 +0200 |
commit | 31bd7bd491738d8653a9e181594969a3665aca22 (patch) | |
tree | b8710c5554c89bd698520fa3f2b80ef1faf454f1 /aconf/model/root.lua | |
parent | 2d58b8f49ec03fe3d4ad843085ffe09880e3f888 (diff) | |
download | aconf-31bd7bd491738d8653a9e181594969a3665aca22.tar.bz2 aconf-31bd7bd491738d8653a9e181594969a3665aca22.tar.xz |
persistence: move augeas back-end directives out of addresses
Diffstat (limited to 'aconf/model/root.lua')
-rw-r--r-- | aconf/model/root.lua | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/aconf/model/root.lua b/aconf/model/root.lua index 2a135f2..a407b07 100644 --- a/aconf/model/root.lua +++ b/aconf/model/root.lua @@ -71,14 +71,28 @@ function M.register(name, field, params) for _, record in ipairs(node.topology(root:fetch(name))) do local top = M.topology(record.addr, true) - local function set(k, v) - setdefault(top, k, v) - assert(top[k] == v) + local function set(k, v, t) + if not t then t = top end + setdefault(t, k, v) + assert(t[k] == v) end set('type', record.type) + set('subtype', record.subtype) table.insert(top.paths, record.path) + local mode = record.be_mode + if mode then + if object.isinstance( + mode, require('aconf.path.address.special').SpecialMode + ) then + mode = {['.']=mode} + end + for addr, m in pairs(mode) do + set('mode', m, addr == '.' and top or top(addr, true)) + end + end + if record.scope then local scope = node.addr( root:fetch(pth.to_absolute(record.scope, pth.parent(record.path))) |