if not turtle then printError("not a turtle") return end local base_path = "https://git.salushnes.solutions/hkc/cc-stuff/raw/branch/master/turtos" _G._TOS_VER = "N/A" local tos_ver_fp = io.open("/.tos-ver", "r") if tos_ver_fp then _G._TOS_VER = tos_ver_fp:read("l") tos_ver_fp:close() end local function getFile(url, path) local r, err = http.get(url) io.write("GET " .. path .. " ... ") if not r then print("FAIL: " .. err) return false, err end io.open(path, "w"):write(r.readAll()):close() io.write("OK\n") end local req, err = http.get(base_path .. "/update.json") if not req then printError("Failed to get update info:", err) else local info = textutils.unserializeJSON(req.readAll()) req.close() print("OTP version: " .. info.ver) print("H/W version: " .. _TOS_VER) if info.ver == _TOS_VER then print("Running on latest firmware") else print("Performing an update...") for i = 1, #info.files do local file = info.files[i] term.write(file.dst, "...") if fs.exists(file.dst) then term.write(" [DEL] ...") fs.delete(file.dst) end getFile(base_path .. file.src, file.dst) end print("Writing new version info") io.open("/.tos-ver", "w"):write(info.ver):close() print("Rebooting") return os.reboot() end end shell.run("fg", "main.lua")