diff options
| author | 魏曹先生 <1992414357@qq.com> | 2026-04-26 00:59:20 +0800 |
|---|---|---|
| committer | 魏曹先生 <1992414357@qq.com> | 2026-04-26 00:59:20 +0800 |
| commit | 94da1b889857e8f936335ebea50c62fcfb3b7c58 (patch) | |
| tree | e70a98fd30b7433f196c21f78e417e71e0758576 /mingling_macros/src | |
| parent | 388dc03dcfcdd2b64865c71dca23f2e57916437e (diff) | |
Add early return for help flag in dispatcher_clap macro
Diffstat (limited to 'mingling_macros/src')
| -rw-r--r-- | mingling_macros/src/dispatcher_clap.rs | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/mingling_macros/src/dispatcher_clap.rs b/mingling_macros/src/dispatcher_clap.rs index 871dbed..8dd38af 100644 --- a/mingling_macros/src/dispatcher_clap.rs +++ b/mingling_macros/src/dispatcher_clap.rs @@ -203,6 +203,9 @@ pub fn dispatcher_clap_attr(attr: TokenStream, item: TokenStream) -> TokenStream // Generate the `begin` method body let begin_body = if let Some(ref error_struct) = options.error_struct { quote! { + if ::mingling::this::<#program_ident>().user_context.help { + return #struct_name::default().to_chain(); + } match <#struct_name as ::clap::Parser>::try_parse_from(clap_args) { Ok(parsed) => parsed.to_chain(), Err(e) => { @@ -212,6 +215,9 @@ pub fn dispatcher_clap_attr(attr: TokenStream, item: TokenStream) -> TokenStream } } else { quote! { + if ::mingling::this::<#program_ident>().user_context.help { + return #struct_name::default().to_chain(); + } let parsed = <#struct_name as ::clap::Parser>::try_parse_from(clap_args) .unwrap_or_else(|e| e.exit()); parsed.to_chain() |
