announce.lua 635 B

12345678910111213141516171819202122232425262728293031323334
  1. #!/usr/bin/lua
  2. module('gluon.announce', package.seeall)
  3. fs = require 'luci.fs'
  4. json = require 'luci.json'
  5. uci = require('luci.model.uci').cursor()
  6. util = require 'luci.util'
  7. local function collect_entry(entry)
  8. if fs.isdirectory(entry) then
  9. return collect_dir(entry)
  10. else
  11. return setfenv(loadfile(entry), _M)()
  12. end
  13. end
  14. function collect_dir(dir)
  15. local ret = { [json.null] = true }
  16. for _, entry in ipairs(fs.dir(dir)) do
  17. if entry:sub(1, 1) ~= '.' then
  18. local ok, val = pcall(collect_entry, dir .. '/' .. entry)
  19. if ok then
  20. ret[entry] = val
  21. else
  22. io.stderr:write(val, '\n')
  23. end
  24. end
  25. end
  26. return ret
  27. end