summaryrefslogtreecommitdiffstats
path: root/acf/persistence/backends/augeas.lua
diff options
context:
space:
mode:
Diffstat (limited to 'acf/persistence/backends/augeas.lua')
-rw-r--r--acf/persistence/backends/augeas.lua26
1 files changed, 26 insertions, 0 deletions
diff --git a/acf/persistence/backends/augeas.lua b/acf/persistence/backends/augeas.lua
new file mode 100644
index 0000000..34d7df8
--- /dev/null
+++ b/acf/persistence/backends/augeas.lua
@@ -0,0 +1,26 @@
+--[[
+Copyright (c) 2012 Kaarle Ritvanen
+See LICENSE file for license details
+--]]
+
+module(..., package.seeall)
+
+local pth = require('acf.path')
+local map = require('acf.util').map
+
+backend = require('acf.object').class()
+
+function backend:init() self.aug = require('augeas').init() end
+
+function backend:get(path)
+ path = '/'..pth.join(unpack(path))
+ local _, count = self.aug:match(path)
+ if count == 0 then return end
+
+ local value = self.aug:get(path)
+ if value ~= nil then return value end
+
+ return map(pth.name, self.aug:match(path..'/*'))
+end
+
+-- TODO implement set function