Files
LeonOS/data/computercraft/lua/rom/update.lua
Leonmmcoset 90a901f58e feat: 初始提交 LeonOS 实现
添加 LeonOS 的基本实现,包括:
- 核心 API 模块(colors, disk, gps, keys, multishell, parallel, rednet, redstone, settings, vector)
- 命令行程序(about, alias, bg, clear, copy, delete, edit, fg, help, list, lua, mkdir, move, paint, peripherals, programs, reboot, set, shutdown, threads)
- 系统启动脚本和包管理
- 文档(README.md, LICENSE)
- 开发工具(devbin)和更新程序

实现功能:
- 完整的线程管理系统
- 兼容 ComputerCraft 的 API 设计
- 改进的 shell 和命令补全系统
- 多标签终端支持
- 设置管理系统
2025-08-31 16:54:18 +08:00

64 lines
1.7 KiB
Lua

-- update: download a new copy of LeonOS
local rc = require("rc")
local term = require("term")
local colors = require("colors")
local textutils = require("textutils")
if not package.loaded.http then
io.stderr:write("The HTTP API is disabled and the updater cannot continue. Please enable the HTTP API in the ComputerCraft configuration and try again.\n")
return
end
term.at(1,1).clear()
textutils.coloredPrint(colors.yellow,
"LeonOS Updater (Stage 1)\n===========================")
print("Checking for update...")
local http = require("http")
local base = "https://raw.githubusercontent.com/LeonMMcoset/LeonOS/primary/"
local Bhandle, Berr = http.get(base .. "data/computercraft/lua/bios.lua")
if not Bhandle then
error(Berr, 0)
end
local first = Bhandle.readLine()
Bhandle.close()
local oldVersion = rc.version():gsub("LeonOS ", "")
local newVersion = first:match("LeonOS v?(%d+.%d+.%d+)")
if newVersion and (oldVersion ~= newVersion) or (...) == "-f" then
textutils.coloredPrint(colors.green, "Found", colors.white, ": ",
colors.red, oldVersion, colors.yellow, " -> ", colors.lime,
newVersion or oldVersion)
io.write("Apply update? [y/N]: ")
if io.read() ~= "y" then
textutils.coloredPrint(colors.red, "Not applying update.")
return
end
textutils.coloredPrint(colors.green, "Applying update.")
local handle, err = http.get(base.."updater.lua", nil, true)
if not handle then
error("Failed downloading stage 2: " .. err, 0)
end
local data = handle.readAll()
handle.close()
local out = io.open("/.start_rc.lua", "w")
out:write(data)
out:close()
textutils.coloredWrite(colors.yellow, "Restarting...")
rc.sleep(3)
rc.reboot()
else
textutils.coloredPrint(colors.red, "None found")
end