2024-01-12 19:29:53 +03:00
|
|
|
if not turtle then
|
|
|
|
printError("not a turtle")
|
|
|
|
return
|
|
|
|
end
|
|
|
|
|
2024-01-12 22:04:57 +03:00
|
|
|
local base_path = "https://git.salushnes.solutions/hkc/cc-stuff/raw/branch/master/turtos"
|
|
|
|
|
2024-01-12 19:26:51 +03:00
|
|
|
_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
|
|
|
|
|
2024-01-12 22:04:57 +03:00
|
|
|
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()
|
|
|
|
|
2024-01-12 19:26:51 +03:00
|
|
|
print("OTP version: " .. info.ver)
|
|
|
|
print("H/W version: " .. _TOS_VER)
|
2024-01-12 22:04:57 +03:00
|
|
|
|
2024-01-12 19:26:51 +03:00
|
|
|
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
|
2024-01-12 22:04:57 +03:00
|
|
|
getFile(base_path .. file.src, file.dst)
|
2024-01-12 19:26:51 +03:00
|
|
|
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")
|