-- startup.lua for Crafting Turtle -- Auto-updates from git then launches craftingTurtle.lua local REPO_RAW = "https://git.spatulaa.com/MayaTheShy/Inventory-Manager-CC/raw/branch/main" local FILES = { ["craftingTurtle.lua"] = "craftingTurtle.lua", } ------------------------------------------------- local function download(remotePath, localPath) local url = REPO_RAW .. "/" .. remotePath local response = http.get(url) if response then 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(" Crafting Turtle - Startup") print(" Computer ID: " .. os.getComputerID()) print("==================================") print("") 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)) else print(string.format("All %d files up to date.", updated)) end print("") print("Starting craftingTurtle...") sleep(1) -- Reboot listener: reboots this turtle on remote command local SYSTEM_CHANNEL = 4205 local ROLE = "turtle" local function rebootListener() local m = peripheral.find("modem") if not m then return end m.open(SYSTEM_CHANNEL) while true do local _, _, channel, _, message = os.pullEvent("modem_message") if channel == SYSTEM_CHANNEL and type(message) == "table" and message.type == "reboot" then local target = message.target or "all" if target == "all" or target == ROLE or target == tostring(os.getComputerID()) then print("[SYSTEM] Reboot command received. Rebooting...") sleep(0.5) os.reboot() end end end end parallel.waitForAny( function() shell.run("craftingTurtle.lua") end, rebootListener )