mirror of
https://github.com/CCLeonOS/LeonOS.git
synced 2026-03-03 06:47:00 +00:00
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 和命令补全系统 - 多标签终端支持 - 设置管理系统
This commit is contained in:
58
data/computercraft/lua/rom/programs/craftos.lua
Normal file
58
data/computercraft/lua/rom/programs/craftos.lua
Normal file
@@ -0,0 +1,58 @@
|
||||
-- LeonOS compatibility, in theory
|
||||
|
||||
local rc = require("rc")
|
||||
local settings = require("settings")
|
||||
|
||||
if not settings.get("bios.compat_mode") then
|
||||
error("compatibility mode is disabled", 0)
|
||||
end
|
||||
|
||||
if os.version then
|
||||
error("you are already in compatibility mode", 0)
|
||||
end
|
||||
|
||||
local libs = {
|
||||
"peripheral", "fs", "settings", "http", "term", "colors", "multishell",
|
||||
"keys", "parallel", "shell", "textutils", "window", "paintutils"
|
||||
}
|
||||
|
||||
local move = {
|
||||
"queueEvent", "startTimer", "cancelTimer", "setAlarm", "cancelAlarm", "getComputerID",
|
||||
"computerID", "getComputerLabel", "setComputerLabel", "computerLabel", "day", "epoch",
|
||||
"pullEvent", "sleep"
|
||||
}
|
||||
|
||||
local nEnv = setmetatable({}, {__index=_G})
|
||||
nEnv.os = setmetatable({}, {__index=os})
|
||||
|
||||
for i=1, #libs, 1 do
|
||||
nEnv[libs[i]] = select(2, pcall(require, libs[i]))
|
||||
end
|
||||
|
||||
for i=1, #move do
|
||||
nEnv.os[move[i]] = rc[move[i]]
|
||||
end
|
||||
|
||||
function nEnv.printError(text)
|
||||
io.stderr:write(text, "\n")
|
||||
end
|
||||
|
||||
nEnv.write = rc.write
|
||||
|
||||
nEnv.unpack = table.unpack
|
||||
if rc.lua51 then
|
||||
for k, v in pairs(rc.lua51) do
|
||||
nEnv[k] = v
|
||||
end
|
||||
end
|
||||
|
||||
nEnv.read = nEnv.term.read
|
||||
nEnv.sleep = nEnv.os.sleep
|
||||
|
||||
function nEnv.os.version()
|
||||
return "LeonOS 1.0 ALpha 1"
|
||||
end
|
||||
|
||||
local func, err = loadfile("/rc/programs/shell.lua", "t", nEnv)
|
||||
if not func then error(err, 0) end
|
||||
func()
|
||||
Reference in New Issue
Block a user