gluon-packages/gluon/gluon-alfred/files/lib/gluon/alfred/announce.lua

45 lines
855 B
Lua
Executable File

#!/usr/bin/lua
local alfred_data_type = 158
local announce_dir = '/lib/gluon/alfred/announce.d'
fs = require 'luci.fs'
uci = require('luci.model.uci').cursor()
util = require 'luci.util'
local json = require 'luci.json'
local ltn12 = require 'luci.ltn12'
local function collect_entry(entry)
if fs.isdirectory(entry) then
return collect_dir(entry)
else
return dofile(entry)
end
end
function collect_dir(dir)
local ret = {}
for _, entry in ipairs(fs.dir(dir)) do
if entry:sub(1, 1) ~= '.' then
err, val = pcall(collect_entry, dir .. '/' .. entry)
if err then
ret[entry] = val
else
io.stderr:write(val, '\n')
end
end
end
return ret
end
encoder = json.Encoder(collect_dir(announce_dir))
alfred = io.popen('alfred -s ' .. tostring(alfred_data_type), 'w')
ltn12.pump.all(encoder:source(), ltn12.sink.file(alfred))