diff options
| author | 魏曹先生 <1992414357@qq.com> | 2026-08-03 20:30:33 +0800 |
|---|---|---|
| committer | 魏曹先生 <1992414357@qq.com> | 2026-08-03 20:38:02 +0800 |
| commit | fc0df246c2f55985de1813a9c30eb0c6e61c8a99 (patch) | |
| tree | 122187b5013b0021ca86fd830e5c170424dcab01 /mingling_cli/src | |
| parent | f7862affd74ac3b129f9e9791a4cd4e1c7e3e6d1 (diff) | |
feat(cli): add dynamic completion scripts and global helpwip/mingling-cli-ux
Enable the dispatch_tree and comp features to generate
completion scripts during build and register global help
and completion support in the main entry point.
Diffstat (limited to 'mingling_cli/src')
| -rw-r--r-- | mingling_cli/src/linter.rs | 23 | ||||
| -rw-r--r-- | mingling_cli/src/main.rs | 19 | ||||
| -rw-r--r-- | mingling_cli/src/metadata.rs | 3 |
3 files changed, 19 insertions, 26 deletions
diff --git a/mingling_cli/src/linter.rs b/mingling_cli/src/linter.rs index 859ffc5..8be45c8 100644 --- a/mingling_cli/src/linter.rs +++ b/mingling_cli/src/linter.rs @@ -1,30 +1,11 @@ -use mingling::{ - Program, - macros::{chain, dispatcher, entry, program_setup}, -}; +use mingling::macros::{chain, dispatcher, entry}; -use crate::{ - linter::cmd_mlint::{CMDLint, EntryLint}, - metadata::setup::ResUsingJson, -}; +use crate::{linter::cmd_mlint::EntryLint, metadata::setup::ResUsingJson}; pub mod cmd_mlint; pub mod mlint_attr; pub mod mlint_report; -#[program_setup] -pub fn mingling_linter_setup(program: &mut Program<crate::ThisProgram>) { - program.with_setup(MinglingLinterCommandSetup); -} - -#[program_setup] -pub fn mingling_linter_command_setup(program: &mut Program<crate::ThisProgram>) { - program.with_dispatcher(CMDLint); - program.with_dispatcher(CMDLinterSupportRustAnalyzer); - program.with_dispatcher(CMDLinterSupportRustAnalyzerWithClippy); - program.with_dispatcher(CMDLinterSupportRustAnalyzerWithCheck); -} - // Aliases dispatcher!("ra-lint-clippy", diff --git a/mingling_cli/src/main.rs b/mingling_cli/src/main.rs index c822a12..149093c 100644 --- a/mingling_cli/src/main.rs +++ b/mingling_cli/src/main.rs @@ -1,6 +1,8 @@ -use crate::{linter::MinglingLinterSetup, metadata::MinglingMetadataSetup}; +use crate::metadata::MinglingMetadataSetup; use mingling::{ - macros::gen_program, + ShellContext, Suggest, + consts::HELP_FLAG, + macros::{completion, gen_program, help, suggest}, setup::{ExitCodeSetup, picker::HelpFlagSetup}, }; @@ -20,10 +22,21 @@ async fn main() { program.with_setup(ExitCodeSetup::default()); program.with_setup(MinglingMetadataSetup); - program.with_setup(MinglingLinterSetup); // Exec program.exec_and_exit().await; } +#[help] +pub fn help_global(_: EntryFallback) -> String { + include_str!("../help/help.txt").to_string() +} + +#[completion(EntryFallback)] +pub fn complete_global(_ctx: &ShellContext) -> Suggest { + suggest! { + HELP_FLAG: "Show help messages" + } +} + gen_program!(); diff --git a/mingling_cli/src/metadata.rs b/mingling_cli/src/metadata.rs index 2e7aeef..f11ae36 100644 --- a/mingling_cli/src/metadata.rs +++ b/mingling_cli/src/metadata.rs @@ -4,7 +4,7 @@ use mingling::{ macros::{buffer, group, program_setup, r_println, renderer, renderify}, }; -use crate::metadata::{cmd_metadata::CMDMetadata, setup::CargoMetadataSetup}; +use crate::metadata::setup::CargoMetadataSetup; pub mod cmd_metadata; pub mod setup; @@ -12,7 +12,6 @@ pub mod setup; #[program_setup] pub fn mingling_metadata_setup(program: &mut Program<crate::ThisProgram>) { program.with_setup(CargoMetadataSetup); - program.with_dispatcher(CMDMetadata); } group!(Metadata); |
