refactor(spec,loader): 优化项目结构,

- 提取公共方法
- 优化 Mirror FromLua trait 处理逻辑
- 新增 logger.rs 统一日志处理
- 其他优化
This commit is contained in:
2026-09-07 17:02:54 +08:00
parent 941558cb92
commit 94b4c23299
17 changed files with 1086 additions and 995 deletions

View File

@@ -11,8 +11,6 @@ path = "src/main.rs"
[dependencies]
mirror-core = { path = "../mirror-core" }
clap = { version = "4.6.6", features = ["cargo", "color", "derive","string"] }
clap_derive = { version = "4.6.4" }
mlua = { workspace = true }
anyhow = { workspace = true }
tracing = { workspace = true }
tracing-subscriber = { workspace = true }

View File

@@ -1,11 +1,16 @@
use crate::cli;
use crate::commands::{builtin, dynamic::MrCommand};
use anyhow::{Context, Result, bail};
use mirror_core::{Layout, LuaRuntime};
use tracing::debug;
use mirror_core::{init_logging_from, Layout, LuaRuntime};
pub fn run() -> Result<()> {
let exe = std::env::current_exe().context("获取代理程序路径失败")?;
let layout = Layout::from(&exe)?;
let _guard = init_logging_from(&layout);
debug!("=== 管理程序启动 ===");
let registry_file = layout.base_dir.join("commands").join("commands.lua");
let runtime = LuaRuntime::new(&layout)?;

View File

@@ -1,13 +1,13 @@
use anyhow::{Context, Result};
use mirror_core::Layout;
use mirror_core::{Layout, LogLevel};
use std::fs;
// Rust 原生处理 log 命令逻辑
pub(crate) fn log_handle(layout: &Layout, matches: &clap::ArgMatches) -> Result<()> {
let log_ini_path = layout.base_dir.join("mirror-log.ini");
let log_ini_path = layout.base_dir.join("../../../mirror-core/mirror.ini");
// 1. 处理设置日志等级
if let Some(level) = matches.get_one::<String>("level") {
if let Some(&level) = matches.get_one::<LogLevel>("level") {
let content = format!("level = \"{}\"\nlog_dir = \"logs\"\n", level.as_str());
fs::write(&log_ini_path, content)
.with_context(|| format!("写入日志配置文件失败: {}", log_ini_path.display()))?;
@@ -26,9 +26,9 @@ pub(crate) fn log_handle(layout: &Layout, matches: &clap::ArgMatches) -> Result<
if log_ini_path.is_file() {
let current_ini = fs::read_to_string(&log_ini_path)
.with_context(|| format!("读取配置文件失败: {}", log_ini_path.display()))?;
println!("当前 mirror-log.ini 配置:\n{current_ini}");
println!("当前 mirror.ini 配置:\n{current_ini}");
} else {
println!("未找到 mirror-log.ini当前使用默认全局级别: info");
println!("未找到 mirror.ini当前使用默认全局级别: warn");
}
Ok(())

View File

@@ -55,7 +55,7 @@ pub struct MrSubCommand {
/// 命令处理函数:必须是 Lua Function
pub(crate) module: String,
/// 命令行说明:必须是普通文本字符串
pub(crate) description: String,
pub(crate) description: String ,
}
impl FromLua for MrSubCommand {

View File

@@ -38,4 +38,4 @@ pub fn validate_command_name(name: &Value) -> mlua::Result<String> {
)));
}
Ok(name_str)
}
}