refactor(spec,loader): 优化项目结构,
- 提取公共方法 - 优化 Mirror FromLua trait 处理逻辑 - 新增 logger.rs 统一日志处理 - 其他优化
This commit is contained in:
@@ -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 }
|
||||
@@ -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)?;
|
||||
|
||||
@@ -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(())
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -38,4 +38,4 @@ pub fn validate_command_name(name: &Value) -> mlua::Result<String> {
|
||||
)));
|
||||
}
|
||||
Ok(name_str)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user