refactor: 配置文件引擎迁移至 mlua 并优化环境变量注入

- 配置文件解析引擎由 shim 替换为 mlua (Lua 5.4)
- 优化路由策略:统一以根目录 shims.lua 为入口,支持 tools/ 目录模块化降级探测
- 自动注入 __SHIM_DIR__ 绝对路径与 package.path 模块搜索路径
- 环境变量改用 Command::envs 安全注入,并在 UAC 提权时透传
This commit is contained in:
2026-08-12 20:19:50 +08:00
parent 7934dde74d
commit 4aa619f07e
6 changed files with 516 additions and 105 deletions

44
shims.lua Normal file
View File

@@ -0,0 +1,44 @@
-- shims.lua (总控制台)
-- __SHIM_DIR__ 已经在 Rust 中注入完毕,并且是正斜杠格式 (例如 C:/Tools)
local base_dir = __SHIM_DIR__
return {
---------------------------------------------------
-- 1. 标准相对路径 + 正斜杠拼接 (最推荐,绿色便携)
---------------------------------------------------
["git"] = {
path = base_dir .. "/git/bin/git.exe",
-- 追加参数
args = {"--no-pager"},
-- 注入环境变量,使用 get_env 获取宿主机当前值
env = {
PATH = base_dir .. "/git/bin;" .. get_env("PATH")
}
},
---------------------------------------------------
-- 2. Lua 原生字符串语法 [[ ]] (适合直接从 Windows 复制绝对路径)
---------------------------------------------------
["python"] = {
-- 在 [[]] 内部,\ 不需要写成 \\,直接粘贴即可
path = [[C:\Python310\python.exe]],
args = {"-B"},
-- 空字典也是合法的,等同于不设置
env = {}
},
---------------------------------------------------
-- 3. 极简参数覆盖 (没有 args 和 env)
---------------------------------------------------
["curl"] = {
path = base_dir .. "/curl/curl.exe"
},
---------------------------------------------------
-- 4. 模块化路由 (得益于 Rust 注入的 package.path)
-- require 能够直接在当前目录 或 conf.d/ 目录下寻找 node.lua
---------------------------------------------------
["node"] = require("node"),
["npm"] = require("npm")
}