-- factoryos.programs.controller — facility controller runtime.

local log     = require("factoryos.core.log")
local config  = require("factoryos.core.config")
local Node    = require("factoryos.net.node")
local modhost = require("factoryos.modhost")

local cfg = config.loadOr("/factoryos/node.cfg", {
  name = "ctrl-" .. tostring(os.getComputerID and os.getComputerID() or 0),
  role = "controller", facility = "default", modules = {},
})
cfg.role = "controller"
-- every controller can act as a redstone switch board by default;
-- rswitch is inert until outputs are configured/used
if cfg.modules == nil or cfg._absent then cfg.modules = { "rswitch" } end
log.setup({ file = "/factoryos/data/node.log", level = cfg.logLevel })

local node = Node.new(cfg)
local ok, err = node:open()
if not ok then error("controller: " .. tostring(err)) end

modhost.load(node, cfg)

node:run()
