mirror of
https://github.com/clash-verge-rev/clash-verge-rev
synced 2025-05-05 05:43:44 +08:00
- Renamed `cmds` module to `cmd` for better naming consistency - Reorganized command modules into separate files under src/cmd/ - Updated all imports and references to use the new module name - Fixed missing dependency in webdav.rs to reference core::backup - Updated tray module to use new cmd namespace - Improved uwp.rs module structure using platform-specific implementations - Removed unnecessary imports from various command files
102 lines
3.9 KiB
Rust
102 lines
3.9 KiB
Rust
use crate::core::*;
|
|
use super::CmdResult;
|
|
|
|
/// 发送脚本验证通知消息
|
|
#[tauri::command]
|
|
pub async fn script_validate_notice(status: String, msg: String) -> CmdResult {
|
|
handle::Handle::notice_message(&status, &msg);
|
|
Ok(())
|
|
}
|
|
|
|
/// 处理脚本验证相关的所有消息通知
|
|
/// 统一通知接口,保持消息类型一致性
|
|
pub fn handle_script_validation_notice(result: &(bool, String), file_type: &str) {
|
|
if !result.0 {
|
|
let error_msg = &result.1;
|
|
|
|
// 根据错误消息内容判断错误类型
|
|
let status = if error_msg.starts_with("File not found:") {
|
|
"config_validate::file_not_found"
|
|
} else if error_msg.starts_with("Failed to read script file:") {
|
|
"config_validate::script_error"
|
|
} else if error_msg.starts_with("Script syntax error:") {
|
|
"config_validate::script_syntax_error"
|
|
} else if error_msg == "Script must contain a main function" {
|
|
"config_validate::script_missing_main"
|
|
} else {
|
|
// 如果是其他类型错误,作为一般脚本错误处理
|
|
"config_validate::script_error"
|
|
};
|
|
|
|
log::warn!(target: "app", "{} 验证失败: {}", file_type, error_msg);
|
|
handle::Handle::notice_message(status, error_msg);
|
|
}
|
|
}
|
|
|
|
/// 验证指定脚本文件
|
|
#[tauri::command]
|
|
pub async fn validate_script_file(file_path: String) -> CmdResult<bool> {
|
|
log::info!(target: "app", "验证脚本文件: {}", file_path);
|
|
|
|
match CoreManager::global().validate_config_file(&file_path, None).await {
|
|
Ok(result) => {
|
|
handle_script_validation_notice(&result, "脚本文件");
|
|
Ok(result.0) // 返回验证结果布尔值
|
|
},
|
|
Err(e) => {
|
|
let error_msg = e.to_string();
|
|
log::error!(target: "app", "验证脚本文件过程发生错误: {}", error_msg);
|
|
handle::Handle::notice_message("config_validate::process_terminated", &error_msg);
|
|
Ok(false)
|
|
}
|
|
}
|
|
}
|
|
|
|
/// 处理YAML验证相关的所有消息通知
|
|
/// 统一通知接口,保持消息类型一致性
|
|
pub fn handle_yaml_validation_notice(result: &(bool, String), file_type: &str) {
|
|
if !result.0 {
|
|
let error_msg = &result.1;
|
|
println!("[通知] 处理{}验证错误: {}", file_type, error_msg);
|
|
|
|
// 检查是否为merge文件
|
|
let is_merge_file = file_type.contains("合并");
|
|
|
|
// 根据错误消息内容判断错误类型
|
|
let status = if error_msg.starts_with("File not found:") {
|
|
"config_validate::file_not_found"
|
|
} else if error_msg.starts_with("Failed to read file:") {
|
|
"config_validate::yaml_read_error"
|
|
} else if error_msg.starts_with("YAML syntax error:") {
|
|
if is_merge_file {
|
|
"config_validate::merge_syntax_error"
|
|
} else {
|
|
"config_validate::yaml_syntax_error"
|
|
}
|
|
} else if error_msg.contains("mapping values are not allowed") {
|
|
if is_merge_file {
|
|
"config_validate::merge_mapping_error"
|
|
} else {
|
|
"config_validate::yaml_mapping_error"
|
|
}
|
|
} else if error_msg.contains("did not find expected key") {
|
|
if is_merge_file {
|
|
"config_validate::merge_key_error"
|
|
} else {
|
|
"config_validate::yaml_key_error"
|
|
}
|
|
} else {
|
|
// 如果是其他类型错误,根据文件类型作为一般错误处理
|
|
if is_merge_file {
|
|
"config_validate::merge_error"
|
|
} else {
|
|
"config_validate::yaml_error"
|
|
}
|
|
};
|
|
|
|
log::warn!(target: "app", "{} 验证失败: {}", file_type, error_msg);
|
|
println!("[通知] 发送通知: status={}, msg={}", status, error_msg);
|
|
handle::Handle::notice_message(status, error_msg);
|
|
}
|
|
}
|