From 31bd7bd491738d8653a9e181594969a3665aca22 Mon Sep 17 00:00:00 2001 From: Kaarle Ritvanen Date: Tue, 10 Mar 2015 21:11:19 +0200 Subject: persistence: move augeas back-end directives out of addresses --- aconf/model/root.lua | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) (limited to 'aconf/model/root.lua') 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))) -- cgit v1.2.3