feat: add interactive setup for Inventory Manager roles and configurations
This commit is contained in:
88
.package
88
.package
@@ -6,4 +6,92 @@
|
||||
"^web/", "^__tests__/", "^startup/",
|
||||
"%.md$", "%.json$", "^%.git", "^LICENSE$", "^node_modules/",
|
||||
},
|
||||
install = [[
|
||||
local pkgDir = fs.combine("packages", "inventory-manager")
|
||||
local function ask(prompt, default)
|
||||
if default and #default > 0 then
|
||||
write(prompt .. " [" .. default .. "]: ")
|
||||
else
|
||||
write(prompt .. ": ")
|
||||
end
|
||||
local val = read()
|
||||
if not val or #val == 0 then return default end
|
||||
return val
|
||||
end
|
||||
|
||||
print("")
|
||||
print("-- Inventory Manager Setup --")
|
||||
print("")
|
||||
print("Which role(s) will this computer run?")
|
||||
print(" 1) Inventory Manager (main controller)")
|
||||
print(" 2) Inventory Client (display-only)")
|
||||
print(" 3) Web Bridge (HTTP forwarder)")
|
||||
print(" 4) Skip setup")
|
||||
print("")
|
||||
write("Choice (1/2/3/4): ")
|
||||
local choice = read()
|
||||
|
||||
if choice == "1" then
|
||||
print("")
|
||||
print("-- Manager Configuration --")
|
||||
local monitorSide = ask("Monitor side", "left")
|
||||
local smelterMonitorSide = ask("Smelter monitor side", "top")
|
||||
local dropperName = ask("Dropper peripheral name", "minecraft:dropper_9")
|
||||
local barrelName = ask("Barrel peripheral name", "minecraft:barrel_0")
|
||||
local serverUrl = ask("Web server URL (blank to skip)", "")
|
||||
|
||||
local cfg = {
|
||||
monitorSide = monitorSide,
|
||||
smelterMonitorSide = smelterMonitorSide,
|
||||
dropperName = dropperName,
|
||||
barrelName = barrelName,
|
||||
}
|
||||
local f = fs.open(fs.combine(pkgDir, ".manager_config"), "w")
|
||||
f.write(textutils.serialiseJSON(cfg))
|
||||
f.close()
|
||||
print("Saved manager config.")
|
||||
|
||||
if serverUrl and #serverUrl > 0 then
|
||||
local bcfg = { serverUrl = serverUrl }
|
||||
local bf = fs.open(fs.combine(pkgDir, ".webbridge_config"), "w")
|
||||
bf.write(textutils.serialiseJSON(bcfg))
|
||||
bf.close()
|
||||
print("Saved web bridge config.")
|
||||
end
|
||||
|
||||
elseif choice == "2" then
|
||||
print("")
|
||||
print("-- Client Configuration --")
|
||||
local monitorSide = ask("Monitor side", "left")
|
||||
local smelterMonitorSide = ask("Smelter monitor side", "top")
|
||||
local dropperName = ask("Dropper peripheral name (blank if none)", "")
|
||||
local barrelName = ask("Barrel peripheral name (blank if none)", "")
|
||||
|
||||
local cfg = {
|
||||
monitorSide = monitorSide,
|
||||
smelterMonitorSide = smelterMonitorSide,
|
||||
}
|
||||
if dropperName and #dropperName > 0 then cfg.dropperName = dropperName end
|
||||
if barrelName and #barrelName > 0 then cfg.barrelName = barrelName end
|
||||
|
||||
local f = fs.open(fs.combine(pkgDir, ".client_config"), "w")
|
||||
f.write(textutils.serialiseJSON(cfg))
|
||||
f.close()
|
||||
print("Saved client config.")
|
||||
|
||||
elseif choice == "3" then
|
||||
print("")
|
||||
print("-- Web Bridge Configuration --")
|
||||
local serverUrl = ask("Web server URL", "http://localhost")
|
||||
|
||||
local cfg = { serverUrl = serverUrl }
|
||||
local f = fs.open(fs.combine(pkgDir, ".webbridge_config"), "w")
|
||||
f.write(textutils.serialiseJSON(cfg))
|
||||
f.close()
|
||||
print("Saved web bridge config.")
|
||||
|
||||
else
|
||||
print("Skipped — edit config files manually later.")
|
||||
end
|
||||
]],
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user