From 072175e5b1754ce8a62925aeff4676cbf4693377 Mon Sep 17 00:00:00 2001 From: 魏曹先生 <1992414357@qq.com> Date: Sun, 5 Apr 2026 23:38:02 +0800 Subject: Update contributing docs and command development guide --- src/cmds/README.md | 54 +++++++++++++++++++++++++------------- src/cmds/README_zh_CN.md | 67 +++++++++++++++++++++++++++++++----------------- src/data/compile_info.rs | 16 ++++++------ 3 files changed, 88 insertions(+), 49 deletions(-) (limited to 'src') diff --git a/src/cmds/README.md b/src/cmds/README.md index 6e4b9f8..eef8209 100644 --- a/src/cmds/README.md +++ b/src/cmds/README.md @@ -89,30 +89,42 @@ pub struct JVSumOutput { - Implements command auto-completion - Naming: Same as command name - Location: `src/cmds/comp/{command_name}.rs` -- Function signature must be `pub fn comp(ctx: CompletionContext) -> Option>` +- Function signature must be `pub fn comp(ctx: CompletionContext) -> CompletionResult` -Example: helpdoc command completion script +Example: workspace_alias command completion script ```rust -// src/cmds/comp/helpdoc.rs -use crate::systems::{comp::context::CompletionContext, helpdoc}; - -pub fn comp(ctx: CompletionContext) -> Option> { - if ctx.previous_word == "helpdoc" { - return Some( - helpdoc::get_helpdoc_list() - .iter() - .map(|s| s.to_string()) - .collect(), - ); +// src/cmds/comp/workspace_alias.rs +use comp_system_macros::{file_suggest, suggest}; +use rust_i18n::t; + +use crate::systems::comp::{context::CompletionContext, result::CompletionResult}; + +pub fn comp(ctx: CompletionContext) -> CompletionResult { + if ctx.current_word.starts_with('-') { + return suggest!( + "-i" = t!("workspace_alias.comp.insert").trim(), + "--insert" = t!("workspace_alias.comp.insert").trim(), + "-Q" = t!("workspace_alias.comp.query").trim(), + "--query" = t!("workspace_alias.comp.query").trim(), + "-e" = t!("workspace_alias.comp.erase").trim(), + "--erase" = t!("workspace_alias.comp.erase").trim(), + "--to" = t!("workspace_alias.comp.to").trim() + ) + .into(); } - None + + if ctx.previous_word == "--to" { + return suggest!().into(); + } + + file_suggest!() } ``` **Completion Script Return Value Explanation:** -- Return `None`: System will suggest file list -- Return `Some(Vec::new())`: No suggestions -- Return `Some(vec!["suggestion1", "suggestion2"])`: Suggest specific content +- Return `file_suggest!()`: System will suggest file list +- Return `suggest!().into()`: No suggestions +- Return `suggest!("--show-desc" = "desc", "--no-desc").into()`: Suggest specific content ## Command Execution Phases @@ -219,6 +231,12 @@ pub async fn render(data: &JVSumOutput) -> Result Result Option>` + - Implement `comp` function with signature `pub fn comp(ctx: CompletionContext) -> CompletionResult` 6. **Test Command** - Use `cargo build` to check compile errors diff --git a/src/cmds/README_zh_CN.md b/src/cmds/README_zh_CN.md index 312d1c3..2e41c88 100644 --- a/src/cmds/README_zh_CN.md +++ b/src/cmds/README_zh_CN.md @@ -89,30 +89,43 @@ pub struct JVSumOutput { - 实现命令的自动补全功能 - 命名规范:与命令同名 - 位置:`src/cmds/comp/{command_name}.rs` -- 函数签名必须为 `pub fn comp(ctx: CompletionContext) -> Option>` +- 函数签名必须为 `pub fn comp(ctx: CompletionContext) -> CompletionResult` -示例:helpdoc 命令的补全脚本 +示例:workspace_alias 命令的补全脚本 ```rust -// src/cmds/comp/helpdoc.rs -use crate::systems::{comp::context::CompletionContext, helpdoc}; - -pub fn comp(ctx: CompletionContext) -> Option> { - if ctx.previous_word == "helpdoc" { - return Some( - helpdoc::get_helpdoc_list() - .iter() - .map(|s| s.to_string()) - .collect(), - ); +// src/cmds/comp/workspace_alias.rs +use comp_system_macros::{file_suggest, suggest}; +use rust_i18n::t; + +use crate::systems::comp::{context::CompletionContext, result::CompletionResult}; + +pub fn comp(ctx: CompletionContext) -> CompletionResult { + if ctx.current_word.starts_with('-') { + return suggest!( + "-i" = t!("workspace_alias.comp.insert").trim(), + "--insert" = t!("workspace_alias.comp.insert").trim(), + "-Q" = t!("workspace_alias.comp.query").trim(), + "--query" = t!("workspace_alias.comp.query").trim(), + "-e" = t!("workspace_alias.comp.erase").trim(), + "--erase" = t!("workspace_alias.comp.erase").trim(), + "--to" = t!("workspace_alias.comp.to").trim() + ) + .into(); } - None + + if ctx.previous_word == "--to" { + return suggest!().into(); + } + + file_suggest!() } ``` **补全脚本返回值说明:** -- 返回 `None`:系统会建议文件列表 -- 返回 `Some(Vec::new())`:不进行任何建议 -- 返回 `Some(vec!["suggestion1", "suggestion2"])`:建议具体内容 + +- 返回 `file_suggest!()`:系统会建议文件列表 +- 返回 `suggest!().into()`:不进行任何建议 +- 返回 `suggest!("--show-desc" = "desc", "--no-desc").into()`:建议具体内容 ## 命令执行阶段 @@ -214,25 +227,33 @@ pub async fn render(data: &JVSumOutput) -> Result Option>` - + - 实现 `comp` 函数,签名必须为 `pub fn comp(ctx: CompletionContext) -> CompletionResult` + 6. **测试命令** + - 使用 `cargo build` 检查编译错误 - 运行命令测试功能 diff --git a/src/data/compile_info.rs b/src/data/compile_info.rs index d06f9b1..de5b86d 100644 --- a/src/data/compile_info.rs +++ b/src/data/compile_info.rs @@ -13,13 +13,13 @@ pub struct CompileInfo { impl Default for CompileInfo { fn default() -> Self { Self { - date: "<<>>".to_string(), - target: "<<>>".to_string(), - platform: "<<>>".to_string(), - toolchain: "<<>>".to_string(), - cli_version: "<<>>".to_string(), - build_branch: "<<>>".to_string(), - build_commit: "<<>>".to_string(), + date: "2026-03-26 16:24:44".to_string(), + target: "x86_64-unknown-linux-gnu".to_string(), + platform: "Linux".to_string(), + toolchain: "rustc 1.91.1 (ed61e7d7e 2025-11-07) (stable)".to_string(), + cli_version: "0.1.1".to_string(), + build_branch: "dev".to_string(), + build_commit: "96e19f1b28e9ad3a58864b41a9d6e25ed255dac6".to_string(), } } -} +} \ No newline at end of file -- cgit