Files
Inventory-Manager-CC/.package
MayaTheShy 173a0a9f95 Persist config files across Opus package updates
The Opus package manager deletes the entire package directory on
update (fs.delete(packageDir)) before re-downloading files. This
wiped all config files (.manager_config, .client_config, etc.) that
were stored inside packages/inventory-manager/.

Fix: add _configPath() helper to every program that resolves config
file paths to usr/config/inventory-manager/ when running under Opus,
which lives outside the package directory and survives updates.
Falls back to the local _path() for standalone (non-Opus) use.

Updated files:
- inventoryManager.lua, manager/config.lua, inventoryClient.lua,
  inventoryWebBridge.lua, dropperController.lua, craftingTurtle.lua
- .package install script: saves configs to usr/config/inventory-manager/
- autorun/startup.lua: checks both persistent and package dirs
- startup/client.lua: uses persistent dir for .client_setup/.dropper_config
- web/server/Dockerfile: switch health check to wget (from prior fix)
2026-03-22 20:51:31 -04:00

100 lines
3.5 KiB
Plaintext

{
title = "Inventory Manager",
description = "Automated inventory management system for CC:Tweaked. Tracks items across networked storage, crafting turtles, furnaces, and alerts. Includes web dashboard via bridge computer.",
repository = "gitea://git.spatulaa.com/MayaTheShy/Inventory-Manager-CC/main/",
exclude = {
"^web/", "^__tests__/", "^startup/",
"%.md$", "%.json$", "^%.git", "^LICENSE$", "^node_modules/",
"%.bak$", "^listDevicesByType%.lua$",
},
install = [[
local cfgDir = "usr/config/inventory-manager"
if not fs.isDir(cfgDir) then fs.makeDir(cfgDir) end
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(cfgDir, ".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(cfgDir, ".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(cfgDir, ".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(cfgDir, ".webbridge_config"), "w")
f.write(textutils.serialiseJSON(cfg))
f.close()
print("Saved web bridge config.")
else
print("Skipped — edit config files manually later.")
end
]],
}