refactor(validators): 优化别名解析流程

- 新增 parse_tokens 按空格切分字符串
- 其他优化
This commit is contained in:
2026-08-26 17:47:21 +08:00
parent 9e1051737a
commit 219a6b3d51
5 changed files with 288 additions and 73 deletions

View File

@@ -15,7 +15,7 @@ fn main() {
set_console_ctrl_handler();
// 3. 解析调用参数与代理 Shim 配置
let calling_args: Vec<_> = env::args_os().skip(1).collect();
let shim = match Mirror::load() {
let mr = match Mirror::new() {
Ok(v) => v,
Err(e) => {
eprintln!("加载代理(shim)配置时发生错误: {}", e);
@@ -23,21 +23,21 @@ fn main() {
}
};
// 构建 Command复用 ShimConfig::to_command含 args/env 注入),避免重复逻辑
let mut cmd = shim.to_command(&calling_args);
let mut cmd = mr.to_command(&calling_args);
let mut child = match cmd.spawn() {
Ok(v) => v,
Err(e) if e.raw_os_error() == Some(ERROR_ELEVATION_REQUIRED) => {
// 提权回退时需要完整参数:配置默认参数 + 调用方透传参数
let mut args = shim.args.clone();
let mut args = mr.spec.args.clone();
args.extend_from_slice(&calling_args);
exit(execute_elevated(&shim.target, &args, Some(&shim.env)))
exit(execute_elevated(&mr.spec.target, &args, Some(&mr.spec.env)))
}
Err(e) => {
eprintln!(
"启动目标程序 [{}] 时发生错误: {}",
shim.target.to_string_lossy(),
mr.spec.target.to_string_lossy(),
e
);
exit(EXIT_FAILED_SPAWN_PROG);
@@ -49,7 +49,7 @@ fn main() {
Err(e) => {
eprintln!(
"等待目标程序 [{}] 执行完毕时发生错误: {}",
shim.target.to_string_lossy(),
mr.spec.target.to_string_lossy(),
e
);
exit(EXIT_FAILED_WAIT_PROG);