3 function module_ref:preinit()
4 self._dependencies = {}
6 local depfile = io.open(self._path .. "/dependencies.txt")
8 local data = depfile:read()
10 self._dependencies = data:split("\n")
15 function module_ref:init()
19 function module_ref:run_script(s)
20 return require(self._path .. "src/" .. s)
23 function module_ref:start()
25 self:run_script("init")
26 print("Started module " .. self._name)
29 function module_ref:get_path()
33 function module_ref:get_data_path()
34 local p = self._data_path
35 if not lfs.attributes(p, "mode") then
40 local module_manager = {}
42 module_manager.module_path = "modules/"
43 module_manager.data_path = "data/"
45 function module_manager:init()
46 if not lfs.attributes(self.data_path, "mode") then
47 lfs.mkdir(self.data_path)
50 for modulename in lfs.dir(self.module_path) do
51 if modulename:sub(1, 1) ~= "." then
52 local m = ObjectMgr.create()
54 m._path = self.module_path .. modulename .. "/"
55 m._data_path = self.data_path .. modulename .. "/"
56 m:add_proto(module_ref)
58 self._modules[modulename] = m
63 function module_manager:start_module(name)
64 local m = self._modules[name]
66 error("Module '" .. name .. "' not found.")
67 elseif m._started then
70 for _, dep in ipairs(m._dependencies) do
71 self:start_module(dep)