From 8da6d8bc0e739446fb93a5fb946be64d8d27a3f0 Mon Sep 17 00:00:00 2001 From: MayaTheShy Date: Sun, 22 Mar 2026 03:09:04 -0400 Subject: [PATCH] Add startup script for Inventory Client with auto-update functionality --- startup/client.lua | 75 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 startup/client.lua diff --git a/startup/client.lua b/startup/client.lua new file mode 100644 index 0000000..0824ec2 --- /dev/null +++ b/startup/client.lua @@ -0,0 +1,75 @@ +-- startup.lua for Inventory Client computer +-- Auto-updates from git then launches inventoryClient + dropperController in parallel + +local REPO_RAW = "https://git.spatulaa.com/MayaTheShy/Inventory-Manager-CC/raw/branch/main" + +-- Files to download (destination -> repo path) +local FILES = { + ["inventoryClient.lua"] = "inventoryClient.lua", + ["dropperController.lua"] = "dropperController.lua", + ["lib/log.lua"] = "lib/log.lua", + ["lib/ui.lua"] = "lib/ui.lua", +} + +------------------------------------------------- + +local function ensureDir(filePath) + local dir = filePath:match("^(.+)/") + if dir and not fs.isDir(dir) then + fs.makeDir(dir) + end +end + +local function download(remotePath, localPath) + local url = REPO_RAW .. "/" .. remotePath + local response = http.get(url) + if response then + ensureDir(localPath) + local f = fs.open(localPath, "w") + f.write(response.readAll()) + f.close() + response.close() + return true + end + return false +end + +------------------------------------------------- + +term.clear() +term.setCursorPos(1, 1) +print("==================================") +print(" Inventory Client - Startup") +print(" Computer ID: " .. os.getComputerID()) +print("==================================") +print("") + +-- Update files +local updated, failed = 0, 0 +for localPath, remotePath in pairs(FILES) do + write(" " .. localPath .. " ... ") + if download(remotePath, localPath) then + print("OK") + updated = updated + 1 + else + print("FAIL") + failed = failed + 1 + end +end + +print("") +if failed > 0 then + print(string.format("Updated %d files, %d failed.", updated, failed)) + print("Continuing with existing files...") +else + print(string.format("All %d files up to date.", updated)) +end + +print("") +print("Starting inventoryClient + dropperController...") +sleep(1) + +parallel.waitForAny( + function() shell.run("inventoryClient.lua") end, + function() shell.run("dropperController.lua") end +)