2014-03-01 22:47:03 +00:00
|
|
|
#!/usr/bin/lua
|
|
|
|
|
2014-06-09 16:48:15 +00:00
|
|
|
local alfred_data_type = 158
|
|
|
|
local announce_dir = '/lib/gluon/alfred/announce.d'
|
2014-03-01 22:47:03 +00:00
|
|
|
|
|
|
|
|
2014-06-09 16:48:15 +00:00
|
|
|
fs = require 'luci.fs'
|
|
|
|
uci = require('luci.model.uci').cursor()
|
|
|
|
util = require 'luci.util'
|
2014-03-01 22:47:03 +00:00
|
|
|
|
|
|
|
|
2014-06-09 16:48:15 +00:00
|
|
|
local json = require 'luci.json'
|
|
|
|
local ltn12 = require 'luci.ltn12'
|
2014-03-01 22:47:03 +00:00
|
|
|
|
|
|
|
|
2014-06-09 16:48:15 +00:00
|
|
|
local function collect_entry(entry)
|
|
|
|
if fs.isdirectory(entry) then
|
|
|
|
return collect_dir(entry)
|
|
|
|
else
|
|
|
|
return dofile(entry)
|
|
|
|
end
|
2014-03-01 22:47:03 +00:00
|
|
|
end
|
|
|
|
|
2014-06-09 16:48:15 +00:00
|
|
|
function collect_dir(dir)
|
|
|
|
local ret = {}
|
2014-03-01 22:47:03 +00:00
|
|
|
|
2014-06-09 16:48:15 +00:00
|
|
|
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
|
2014-03-01 22:47:03 +00:00
|
|
|
|
2014-06-09 16:48:15 +00:00
|
|
|
return ret
|
2014-03-01 22:47:03 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
|
2014-06-09 16:48:15 +00:00
|
|
|
encoder = json.Encoder(collect_dir(announce_dir))
|
|
|
|
alfred = io.popen('alfred -s ' .. tostring(alfred_data_type), 'w')
|
2014-03-01 22:47:03 +00:00
|
|
|
ltn12.pump.all(encoder:source(), ltn12.sink.file(alfred))
|