diff options
Diffstat (limited to 'docs')
| -rw-r--r-- | docs/_zh_CN/pages/1-getting-started.md | 4 | ||||
| -rw-r--r-- | docs/_zh_CN/pages/8-setup-and-resources.md | 6 | ||||
| -rw-r--r-- | docs/_zh_CN/pages/other/features.md | 4 | ||||
| -rw-r--r-- | docs/dev/pages/issues/the-shit-time.md | 40 | ||||
| -rw-r--r-- | docs/pages/1-getting-started.md | 4 | ||||
| -rw-r--r-- | docs/pages/8-setup-and-resources.md | 6 | ||||
| -rw-r--r-- | docs/pages/other/features.md | 5 | ||||
| -rw-r--r-- | docs/res/guide.txt | 2 |
8 files changed, 56 insertions, 15 deletions
diff --git a/docs/_zh_CN/pages/1-getting-started.md b/docs/_zh_CN/pages/1-getting-started.md index 2fca931..6aa6229 100644 --- a/docs/_zh_CN/pages/1-getting-started.md +++ b/docs/_zh_CN/pages/1-getting-started.md @@ -13,7 +13,7 @@ cd my-cli ```toml [dependencies.mingling] -version = "0.3.0" +version = "0.4.0" features = [] ``` @@ -25,7 +25,7 @@ features = [] ```toml [dependencies.mingling] -version = "0.3.0" +version = "0.4.0" features = [ "parser", "comp", diff --git a/docs/_zh_CN/pages/8-setup-and-resources.md b/docs/_zh_CN/pages/8-setup-and-resources.md index 9ed9894..79d1cb5 100644 --- a/docs/_zh_CN/pages/8-setup-and-resources.md +++ b/docs/_zh_CN/pages/8-setup-and-resources.md @@ -11,11 +11,12 @@ // Features: ["extras"] @@@use mingling::macros::program_setup; @@@use mingling::Program; +@@@use mingling::Verbosity; #[program_setup] fn my_setup(program: &mut Program<ThisProgram>) { // 从参数中提取全局标志 program.global_flag(["-v", "--verbose"], |program| { - program.stdout_setting.verbose = true; + program.stdout_setting.verbosity = Verbosity::Verbose; }); } @@@ @@ -42,11 +43,12 @@ Setup 里最常用的操作就是提取全局参数。Mingling 提供了几个 // Features: ["extras"] @@@use mingling::macros::program_setup; @@@use mingling::Program; +@@@use mingling::Verbosity; #[program_setup] fn my_setup(program: &mut Program<ThisProgram>) { // 布尔标志 program.global_flag(["-v", "--verbose"], |program| { - program.stdout_setting.verbose = true; + program.stdout_setting.verbosity = Verbosity::Verbose; }); // 带值的参数 diff --git a/docs/_zh_CN/pages/other/features.md b/docs/_zh_CN/pages/other/features.md index 2d65e47..f307e4e 100644 --- a/docs/_zh_CN/pages/other/features.md +++ b/docs/_zh_CN/pages/other/features.md @@ -195,7 +195,7 @@ fn handle_state_prev1(_p: StatePrev1) -> Next { ```rust // Features: ["extras"] -use mingling::{macros::program_setup, Program}; +use mingling::{ErrorOutput, macros::program_setup, Program}; fn main() { let mut program = ThisProgram::new(); @@ -206,7 +206,7 @@ fn main() { #[program_setup] fn no_error_setup(program: &mut Program<ThisProgram>) { program.global_flag(["--no-error"], |program| { - program.stdout_setting.error_output = false; + program.stdout_setting.error_output = ErrorOutput::Hide; }); } ``` diff --git a/docs/dev/pages/issues/the-shit-time.md b/docs/dev/pages/issues/the-shit-time.md index ece670e..4c25e8f 100644 --- a/docs/dev/pages/issues/the-shit-time.md +++ b/docs/dev/pages/issues/the-shit-time.md @@ -48,7 +48,7 @@ fn complete_fallback(_ctx: &ShellContext) -> Suggest { --- -## Why can't I register descriptions for commands? +## Why can't I register descriptions for commands? (Solved) (completion) (dispatcher) @@ -109,3 +109,41 @@ fn desc_add(_ctx: &ShellContext) -> Suggest { // Match the corresponding function using enum values inside ThisProgram gen_program!() ``` + +Final implementation: + +`#[metadata]` registers a `Description` for each entry, and `gen_program!()` collects them. During completion, when a subcommand suggestion is generated, its owning entry's `Description` is resolved via the node path and attached as the suggestion's description text. + +```rust +use mingling::{ + ShellContext, Suggest, + macros::{command, completion, gen_program, metadata, suggest}, + metadata::Description, + setup::picker::BasicProgramSetup, +}; + +fn main() { + let mut program = ThisProgram::new(); + program.with_setup(BasicProgramSetup); + program.with_dispatcher(CMDCompletion); + program.with_dispatcher(CMDThanks); + program.exec_and_exit(); +} + +#[command] +pub fn thanks() { + println!("thanks!"); +} + +#[completion(EntryThanks)] +pub fn complete_thanks(_ctx: &ShellContext) -> Suggest { + suggest! { "alice", "bob" } +} + +#[metadata(EntryThanks)] +pub fn desc_thanks() -> Description { + Description::new("Thanks someone") +} + +gen_program!(); +``` diff --git a/docs/pages/1-getting-started.md b/docs/pages/1-getting-started.md index 8c81100..443ed74 100644 --- a/docs/pages/1-getting-started.md +++ b/docs/pages/1-getting-started.md @@ -13,7 +13,7 @@ Add the following to `Cargo.toml`: ```toml [dependencies.mingling] -version = "0.3.0" +version = "0.4.0" features = [] ``` @@ -25,7 +25,7 @@ Some features **directly affect the entire lifecycle behavior**, so you need to ```toml [dependencies.mingling] -version = "0.3.0" +version = "0.4.0" features = [ "parser", "comp", diff --git a/docs/pages/8-setup-and-resources.md b/docs/pages/8-setup-and-resources.md index 12c7610..ae9e18c 100644 --- a/docs/pages/8-setup-and-resources.md +++ b/docs/pages/8-setup-and-resources.md @@ -11,11 +11,12 @@ When a program needs to do some init work at startup—like parsing global args // Features: ["extras"] @@@use mingling::macros::program_setup; @@@use mingling::Program; +@@@use mingling::Verbosity; #[program_setup] fn my_setup(program: &mut Program<ThisProgram>) { // Extract global flag from args program.global_flag(["-v", "--verbose"], |program| { - program.stdout_setting.verbose = true; + program.stdout_setting.verbosity = Verbosity::Verbose; }); } @@@ @@ -42,11 +43,12 @@ The most common use of Setup is extracting global args. Mingling provides a few // Features: ["extras"] @@@use mingling::macros::program_setup; @@@use mingling::Program; +@@@use mingling::Verbosity; #[program_setup] fn my_setup(program: &mut Program<ThisProgram>) { // Boolean flag program.global_flag(["-v", "--verbose"], |program| { - program.stdout_setting.verbose = true; + program.stdout_setting.verbosity = Verbosity::Verbose; }); // Flag with a value diff --git a/docs/pages/other/features.md b/docs/pages/other/features.md index 55b6cc8..ac9d5db 100644 --- a/docs/pages/other/features.md +++ b/docs/pages/other/features.md @@ -63,7 +63,6 @@ features = ["build_full"] # Feature Details - ## Feature `all_serde_fmt` **Description:** @@ -196,7 +195,7 @@ fn handle_state_prev1(_p: StatePrev1) -> Next { ```rust // Features: ["extras"] -use mingling::{macros::program_setup, Program}; +use mingling::{ErrorOutput, macros::program_setup, Program}; fn main() { let mut program = ThisProgram::new(); @@ -207,7 +206,7 @@ fn main() { #[program_setup] fn no_error_setup(program: &mut Program<ThisProgram>) { program.global_flag(["--no-error"], |program| { - program.stdout_setting.error_output = false; + program.stdout_setting.error_output = ErrorOutput::Hide; }); } ``` diff --git a/docs/res/guide.txt b/docs/res/guide.txt index 657c7ca..74f9c69 100644 --- a/docs/res/guide.txt +++ b/docs/res/guide.txt @@ -5,5 +5,5 @@ │ > cargo add mingling │ │ │ │ Or add this to your Cargo.toml │ - │ > mingling = "0.3.0" │ + │ > mingling = "0.4.0" │ └────────────────────────────────────┘ |
