announce.lua 588 B

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