feat(env): 支持环境变量数组跨平台自动拼接

- 支持在 Lua 中配置数组格式的环境变量(如 PATH),由 Rust 按 OS 自动使用 `;` 或 `:` 拼接
- 保持普通字符串格式环境变量的直接覆盖逻辑
- 新增 `ShimConfig::to_command()` 用于快速创建 Command 对象
- 新增 error.rs 明确错误类型
- 新增 build.rs 优化编译
This commit is contained in:
2026-08-13 20:11:55 +08:00
parent 4aa619f07e
commit e52ba67d7e
7 changed files with 356 additions and 126 deletions

View File

@@ -2,6 +2,9 @@
-- __SHIM_DIR__ 已经在 Rust 中注入完毕,并且是正斜杠格式 (例如 C:/Tools)
local base_dir = __SHIM_DIR__
-- 1. 自定义局部变量,方便复用与后续维护
local python_home = base_dir .. "/tools/python39"
return {
---------------------------------------------------
-- 1. 标准相对路径 + 正斜杠拼接 (最推荐,绿色便携)
@@ -9,10 +12,10 @@ return {
["git"] = {
path = base_dir .. "/git/bin/git.exe",
-- 追加参数
args = {"--no-pager"},
args = { "--no-pager" },
-- 注入环境变量,使用 get_env 获取宿主机当前值
env = {
PATH = base_dir .. "/git/bin;" .. get_env("PATH")
PATH = { base_dir .. "/git/bin", get_env("PATH") }
}
},
@@ -22,9 +25,21 @@ return {
["python"] = {
-- 在 [[]] 内部,\ 不需要写成 \\,直接粘贴即可
path = [[C:\Python310\python.exe]],
args = {"-B"},
args = { "-B" },
-- 空字典也是合法的,等同于不设置
env = {}
env = {
-- 普通字符串Rust 直接新建/覆盖该环境变量
PYTHON_HOME = python_home,
HOME = base_dir .. "/home",
-- 数组列表:将 python_home 以及 python_home/Scripts 依次拼接到 PATH 前面
PATH = {
python_home,
python_home .. "/Scripts",
get_env("PATH")
}
}
},
---------------------------------------------------