mirror of
https://github.com/CCLeonOS/LeonOS.git
synced 2026-03-03 06:47:00 +00:00
refactor: 移除自动require功能及相关测试文件
移除auto_require模块及其启动脚本和测试文件 该功能通过修改全局环境实现自动加载库,可能导致不可预期行为
This commit is contained in:
@@ -1,69 +0,0 @@
|
||||
-- auto_require.lua: Automatically require libraries when accessed
|
||||
|
||||
-- Save the original require function
|
||||
local original_require = require
|
||||
|
||||
-- List of common libraries to auto-require
|
||||
local common_libs = {
|
||||
"rc", "fs", "term", "colors", "textutils", "window",
|
||||
"keys", "peripheral", "redstone", "rs", "monitor",
|
||||
"modem", "http", "json", "image", "paint", "sound"
|
||||
}
|
||||
|
||||
-- Pre-load common libraries into a cache
|
||||
local lib_cache = {}
|
||||
for _, lib_name in ipairs(common_libs) do
|
||||
local success, lib = pcall(original_require, lib_name)
|
||||
if success then
|
||||
lib_cache[lib_name] = lib
|
||||
end
|
||||
end
|
||||
|
||||
-- Create a new environment with auto-require functionality
|
||||
local auto_env = setmetatable({}, {
|
||||
__index = function(_, key)
|
||||
-- Check if the key exists in the global environment
|
||||
local val = rawget(_G, key)
|
||||
if val ~= nil then
|
||||
return val
|
||||
end
|
||||
|
||||
-- Check if the key is in our pre-loaded cache
|
||||
if lib_cache[key] then
|
||||
return lib_cache[key]
|
||||
end
|
||||
|
||||
-- Try to require the module using the original require function
|
||||
local success, lib = pcall(original_require, key)
|
||||
if success then
|
||||
lib_cache[key] = lib
|
||||
return lib
|
||||
end
|
||||
|
||||
-- If all else fails, return nil
|
||||
return nil
|
||||
end
|
||||
})
|
||||
|
||||
-- Create a proxy function for require that uses the original require
|
||||
_G.require = function(modname)
|
||||
return original_require(modname)
|
||||
end
|
||||
|
||||
-- Add the auto-require environment to the global metatable
|
||||
local old_mt = getmetatable(_G) or {}
|
||||
local old_index = old_mt.__index
|
||||
old_mt.__index = function(t, key)
|
||||
-- Try the original index first
|
||||
if old_index then
|
||||
local val = old_index(t, key)
|
||||
if val ~= nil then
|
||||
return val
|
||||
end
|
||||
end
|
||||
-- Then try our auto-require environment
|
||||
return auto_env[key]
|
||||
end
|
||||
setmetatable(_G, old_mt)
|
||||
|
||||
return {}
|
||||
@@ -1,21 +0,0 @@
|
||||
-- Test auto_require functionality
|
||||
-- This program doesn't explicitly require 'textutils'
|
||||
|
||||
-- Try to use textutils without requiring it first
|
||||
textutils.coloredPrint(colors.green, "Auto-require test successful!", colors.white)
|
||||
textutils.printTable({test = "This should work without require"})
|
||||
|
||||
-- Try another library
|
||||
term.setTextColor(colors.yellow)
|
||||
print("Using term library without require:")
|
||||
term.at(1, 3).write("Cursor moved using term library")
|
||||
|
||||
-- Test a library that might not be pre-loaded
|
||||
game = fs.open("/test.txt", "w")
|
||||
if game then
|
||||
game.write("Testing fs library")
|
||||
game.close()
|
||||
print("File written successfully")
|
||||
else
|
||||
print("Failed to open file")
|
||||
end
|
||||
@@ -1,5 +0,0 @@
|
||||
-- Load auto_require module to automatically require libraries
|
||||
local success, err = pcall(require, "auto_require")
|
||||
if not success then
|
||||
print("Failed to load auto_require module: " .. tostring(err))
|
||||
end
|
||||
Reference in New Issue
Block a user