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:
2025-08-31 16:54:18 +08:00
commit 90a901f58e
94 changed files with 8372 additions and 0 deletions

View File

@@ -0,0 +1,6 @@
local shell = require("shell")
local completion = require("cc.shell.completion")
shell.setCompletionFunction("alias", completion.build(
nil, completion.program
))

View File

@@ -0,0 +1,6 @@
local shell = require("shell")
local completion = require("cc.shell.completion")
shell.setCompletionFunction("bedit", completion.build(
completion.dirOrFile
))

View File

@@ -0,0 +1,6 @@
local shell = require("shell")
local completion = require("cc.shell.completion")
shell.setCompletionFunction("bg", completion.build(
{ completion.programWithArgs, 1, many = true }
))

View File

@@ -0,0 +1,4 @@
local shell = require("shell")
local completion = require("cc.shell.completion")
shell.setCompletionFunction("enter", completion.build(completion.dir))

View File

@@ -0,0 +1,7 @@
local shell = require("shell")
local completion = require("cc.shell.completion")
shell.setCompletionFunction("copy", completion.build(
{completion.dirOrFile, true},
{completion.dirOrFile, many = true}
))

View File

@@ -0,0 +1,6 @@
local shell = require("shell")
local completion = require("cc.shell.completion")
shell.setCompletionFunction("delete", completion.build(
{completion.dirOrFile, many = true}
))

View File

@@ -0,0 +1,11 @@
local shell = require("shell")
local completion = require("cc.shell.completion")
shell.setCompletionFunction("devbin", completion.build(
{ completion.choice, { "put", "get", "run" }, true },
function(cur, prev)
if prev[1] == "put" then
return completion.dirOrFile(cur, prev)
end
end
))

View File

@@ -0,0 +1,6 @@
local shell = require("shell")
local completion = require("cc.shell.completion")
shell.setCompletionFunction("edit", completion.build(
completion.dirOrFile
))

View File

@@ -0,0 +1,6 @@
local shell = require("shell")
local completion = require("cc.shell.completion")
shell.setCompletionFunction("fg", completion.build(
{ completion.programWithArgs, 1, many = true }
))

View File

@@ -0,0 +1,7 @@
local help = require("help")
local shell = require("shell")
local completion = require("cc.shell.completion")
shell.setCompletionFunction("help", completion.build(
{help.completeTopic, many = true}
))

View File

@@ -0,0 +1,6 @@
local shell = require("shell")
local completion = require("cc.shell.completion")
shell.setCompletionFunction("list", completion.build(
{completion.dir, many = true}
))

View File

@@ -0,0 +1,6 @@
local shell = require("shell")
local completion = require("cc.shell.completion")
shell.setCompletionFunction("mkdir", completion.build(
{completion.dir, many = true}
))

View File

@@ -0,0 +1,7 @@
local shell = require("shell")
local completion = require("cc.shell.completion")
shell.setCompletionFunction("move", completion.build(
{completion.dirOrFile, true},
{completion.dirOrFile, many = true}
))

View File

@@ -0,0 +1,6 @@
local shell = require("shell")
local completion = require("cc.shell.completion")
shell.setCompletionFunction("paint", completion.build(
))

View File

@@ -0,0 +1,6 @@
local shell = require("shell")
local completion = require("cc.shell.completion")
shell.setCompletionFunction("restart", completion.build(
{ completion.choice, { "now" } }
))

View File

@@ -0,0 +1,13 @@
local shell = require("shell")
local complete = require("cc.completion")
local completion = require("cc.shell.completion")
shell.setCompletionFunction("redstone", completion.build(
{ completion.choice, {"probe", "set", "pulse"}, {false, true, true} },
completion.side,
function(cur, prev)
if prev[1] == "set" then
return complete.color(cur, true)
end
end
))

View File

@@ -0,0 +1,6 @@
local shell = require("shell")
local completion = require("cc.shell.completion")
shell.setCompletionFunction("set", completion.build(
{ completion.setting, true }
))

View File

@@ -0,0 +1,6 @@
local shell = require("shell")
local completion = require("cc.shell.completion")
shell.setCompletionFunction("shutdown", completion.build(
{ completion.choice, { "now" } }
))