init.lua 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. -- A work-in-progress universal minetest utility
  2. minetestd = {}
  3. minetestd.modpath = minetest.get_modpath("minetest_systemd")
  4. minetestd.services = {}
  5. minetestd.service_load_order = {}
  6. minetestd.register_service = function(name, service)
  7. minetestd.services[name] = service
  8. minetestd.services[name].initialized = false
  9. minetestd.services[name].enabled = false
  10. minetestd.services[name].depends = service.depends or {}
  11. for depend,_ in pairs(service.depends) do
  12. if not minetestd.services[depend] or not minetestd.services[depend].enabled then
  13. print("[ Failed ] Service "..name.." could not be initialized. (Missing dependency: \""..depend.."\").")
  14. return
  15. end
  16. end
  17. if minetestd.services[name].start then
  18. minetestd.services[name].initialized = minetestd.services[name].start()
  19. if not minetestd.services[name].initialized then
  20. print("[ Failed ] Service "..name.." could not be initialized. (Start call failed).")
  21. return
  22. else
  23. print("[ OK ] "..(minetestd.services[name].description or name).." loaded.")
  24. table.insert((minetestd.service_load_order), name)
  25. end
  26. else
  27. print("[ Warn ] Service "..name.." has no start call, initializing with default.")
  28. minetestd.services[name].start = function() minetestd.services[name].enabled = true; return true end
  29. minetestd.services[name].initialized = minetestd.services[name].start()
  30. end
  31. end
  32. dofile(minetestd.modpath.."/globalstep.lua")
  33. minetestd.register_service("core", {
  34. description = "Minetestd core service",
  35. --allows minetestd to be handled as a service, to some extent
  36. start = function()
  37. dofile(minetestd.modpath.."/chatcommands.lua")
  38. dofile(minetestd.modpath.."/basic_services.lua")
  39. minetestd.services["core"].enabled = true
  40. return true
  41. end,
  42. stop = function()
  43. minetestd.services["core"].enabled = false
  44. end
  45. })