From 18ecddcb3cb51c19d6c9cab8798daf44f8f4e56b Mon Sep 17 00:00:00 2001 From: "1992414357@qq.com" <1992414357@qq.com> Date: Tue, 27 May 2025 10:31:24 +0800 Subject: 1. 将PadClient中的消息队列从Vec替换为VecDeque 2. 将convert_deque_to_vec方法移至nogamepads 3. 将server和client的运行时cli中的print宏换为log中的宏 4. 重命名debug_console.rs为console_utils.rs 5. 重命名logger.rs为logger_utils.rs 6. 将PadServer方法start_listening改为start_server 7. 编写了README.md 8. 优化了发布脚本 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/console_utils.rs | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++ src/convert_utils.rs | 10 ++++++++ src/debug_console.rs | 64 ---------------------------------------------------- src/lib.rs | 5 ++-- src/logger.rs | 22 ------------------ src/logger_utils.rs | 22 ++++++++++++++++++ 6 files changed, 99 insertions(+), 88 deletions(-) create mode 100644 src/console_utils.rs create mode 100644 src/convert_utils.rs delete mode 100644 src/debug_console.rs delete mode 100644 src/logger.rs create mode 100644 src/logger_utils.rs (limited to 'src') diff --git a/src/console_utils.rs b/src/console_utils.rs new file mode 100644 index 0000000..3e673fc --- /dev/null +++ b/src/console_utils.rs @@ -0,0 +1,64 @@ +pub mod debug_console { + use clap::{Command, FromArgMatches}; + use clap::ColorChoice::Auto; + use tokio::io::{AsyncBufReadExt, AsyncWriteExt}; + + pub async fn read_cli(prefix: &str, entry: String, cmd: Command) -> Option + where + Cmd: FromArgMatches, + { + let input: String = { + let mut buffer = String::new(); + let mut stdin = tokio::io::BufReader::new(tokio::io::stdin()); + let mut stdout = tokio::io::stdout(); + + stdout.write_all(prefix.as_bytes()).await.ok().unwrap(); + stdout.flush().await.ok().unwrap(); + + stdin.read_line(&mut buffer).await.ok().unwrap(); + buffer.trim().to_string() + }; + + process_debug_cli(entry, input, cmd).await + } + + async fn process_debug_cli(entry: String, input: String, cmd: Command) -> Option + where + Cmd: FromArgMatches + { + if input.trim().is_empty() { + return None; + } + + let cmd = cmd + .color(Auto) + .help_template( + "{subcommands}{options}" + ) + .disable_help_flag(true) + .disable_version_flag(true); + + let args = shell_words::split(input.as_str()).unwrap_or_else(|_e| { + ["".to_string()].to_vec() + }); + + let full_args = std::iter::once(entry.into()).chain(args); + + match cmd.try_get_matches_from(full_args) { + Ok(matches) => { + match Cmd::from_arg_matches(&matches) { + Ok(cmd) => { + Some(cmd) + } + Err(_err) => { + None + } + } + } + Err(err) => { + println!("{}", err); + None + } + } + } +} diff --git a/src/convert_utils.rs b/src/convert_utils.rs new file mode 100644 index 0000000..fccd01e --- /dev/null +++ b/src/convert_utils.rs @@ -0,0 +1,10 @@ +use std::collections::VecDeque; + +pub fn convert_deque_to_vec (deque: &VecDeque) -> Vec { + let vec_deque_ref = deque; + let mut vec = Vec::new(); + for item in vec_deque_ref { + vec.push(item.clone()) + } + vec +} \ No newline at end of file diff --git a/src/debug_console.rs b/src/debug_console.rs deleted file mode 100644 index 3e673fc..0000000 --- a/src/debug_console.rs +++ /dev/null @@ -1,64 +0,0 @@ -pub mod debug_console { - use clap::{Command, FromArgMatches}; - use clap::ColorChoice::Auto; - use tokio::io::{AsyncBufReadExt, AsyncWriteExt}; - - pub async fn read_cli(prefix: &str, entry: String, cmd: Command) -> Option - where - Cmd: FromArgMatches, - { - let input: String = { - let mut buffer = String::new(); - let mut stdin = tokio::io::BufReader::new(tokio::io::stdin()); - let mut stdout = tokio::io::stdout(); - - stdout.write_all(prefix.as_bytes()).await.ok().unwrap(); - stdout.flush().await.ok().unwrap(); - - stdin.read_line(&mut buffer).await.ok().unwrap(); - buffer.trim().to_string() - }; - - process_debug_cli(entry, input, cmd).await - } - - async fn process_debug_cli(entry: String, input: String, cmd: Command) -> Option - where - Cmd: FromArgMatches - { - if input.trim().is_empty() { - return None; - } - - let cmd = cmd - .color(Auto) - .help_template( - "{subcommands}{options}" - ) - .disable_help_flag(true) - .disable_version_flag(true); - - let args = shell_words::split(input.as_str()).unwrap_or_else(|_e| { - ["".to_string()].to_vec() - }); - - let full_args = std::iter::once(entry.into()).chain(args); - - match cmd.try_get_matches_from(full_args) { - Ok(matches) => { - match Cmd::from_arg_matches(&matches) { - Ok(cmd) => { - Some(cmd) - } - Err(_err) => { - None - } - } - } - Err(err) => { - println!("{}", err); - None - } - } - } -} diff --git a/src/lib.rs b/src/lib.rs index 55ff0ec..5d6a463 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,2 +1,3 @@ -pub mod debug_console; -pub mod logger; \ No newline at end of file +pub mod console_utils; +pub mod logger_utils; +pub mod convert_utils; \ No newline at end of file diff --git a/src/logger.rs b/src/logger.rs deleted file mode 100644 index 77b136e..0000000 --- a/src/logger.rs +++ /dev/null @@ -1,22 +0,0 @@ -use env_logger::Builder; -use log::{info, LevelFilter}; - -pub fn logger_build () { - Builder::new() - .format(|buf, record| { - use std::io::Write; - let now = chrono::Local::now(); - let level_style = buf.default_level_style(record.level()); - writeln!( - buf, - "[{}] [{}] {}", - now.format("%Y-%m-%d %H:%M:%S"), - level_style.value(record.level()), - record.args() - ) - }) - .filter(None, LevelFilter::Info) - .init(); - info!("Logger Built.") -} - diff --git a/src/logger_utils.rs b/src/logger_utils.rs new file mode 100644 index 0000000..77b136e --- /dev/null +++ b/src/logger_utils.rs @@ -0,0 +1,22 @@ +use env_logger::Builder; +use log::{info, LevelFilter}; + +pub fn logger_build () { + Builder::new() + .format(|buf, record| { + use std::io::Write; + let now = chrono::Local::now(); + let level_style = buf.default_level_style(record.level()); + writeln!( + buf, + "[{}] [{}] {}", + now.format("%Y-%m-%d %H:%M:%S"), + level_style.value(record.level()), + record.args() + ) + }) + .filter(None, LevelFilter::Info) + .init(); + info!("Logger Built.") +} + -- cgit