summaryrefslogtreecommitdiff
path: root/src/systems/cmd/processer.rs
diff options
context:
space:
mode:
author魏曹先生 <1992414357@qq.com>2026-02-26 15:37:05 +0800
committer魏曹先生 <1992414357@qq.com>2026-02-26 15:37:05 +0800
commit9420a530e371747cd6df79a5f3bbbf814effe949 (patch)
tree029039bc4cba61e421d62ccecfae565ab3ed9b5d /src/systems/cmd/processer.rs
parent981d244df444d3dcf48dee558109231da7e6a61b (diff)
Add verbose logging support with env_logger
Diffstat (limited to 'src/systems/cmd/processer.rs')
-rw-r--r--src/systems/cmd/processer.rs31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/systems/cmd/processer.rs b/src/systems/cmd/processer.rs
index 196764a..0f68afb 100644
--- a/src/systems/cmd/processer.rs
+++ b/src/systems/cmd/processer.rs
@@ -1,13 +1,20 @@
+use log::{error, info, warn};
+use rust_i18n::t;
+
use crate::systems::cmd::_commands::{jv_cmd_nodes, jv_cmd_process_node};
use crate::systems::cmd::cmd_system::JVCommandContext;
use crate::systems::cmd::errors::CmdProcessError;
use crate::systems::render::renderer::JVRenderResult;
+rust_i18n::i18n!("resources/locales/jvn", fallback = "en");
+
pub async fn jv_cmd_process(
args: &Vec<String>,
ctx: JVCommandContext,
renderer_override: String,
) -> Result<JVRenderResult, CmdProcessError> {
+ info!("{}", t!("verbose.cmd_process_start"));
+
let nodes = jv_cmd_nodes();
// Why add a space?
@@ -27,10 +34,18 @@ pub async fn jv_cmd_process(
match matching_nodes.len() {
0 => {
// No matching node found
+ error!("{}", t!("verbose.cmd_match_no_node"));
return Err(CmdProcessError::NoMatchingCommand);
}
1 => {
let matched_prefix = matching_nodes[0];
+
+ // DEBUG
+ info!(
+ "{}",
+ t!("verbose.cmd_match_matched_single", node = matched_prefix)
+ );
+
let prefix_len = matched_prefix.split_whitespace().count();
let trimmed_args: Vec<String> = args.into_iter().cloned().skip(prefix_len).collect();
return jv_cmd_process_node(matched_prefix, trimmed_args, ctx, renderer_override).await;
@@ -39,6 +54,22 @@ pub async fn jv_cmd_process(
// Multiple matching nodes found
// Find the node with the longest length (most specific match)
let matched_prefix = matching_nodes.iter().max_by_key(|node| node.len()).unwrap();
+
+ // DEBUG
+ let nodes_str = matching_nodes
+ .iter()
+ .map(|s| s.as_str())
+ .collect::<Vec<_>>()
+ .join(", ");
+ warn!(
+ "{}",
+ t!(
+ "verbose.cmd_match_matched_multi",
+ nodes = nodes_str,
+ node = matched_prefix
+ )
+ );
+
let prefix_len = matched_prefix.split_whitespace().count();
let trimmed_args: Vec<String> = args.into_iter().cloned().skip(prefix_len).collect();
return jv_cmd_process_node(matched_prefix, trimmed_args, ctx, renderer_override).await;