aboutsummaryrefslogtreecommitdiff
path: root/mingling_macros
diff options
context:
space:
mode:
author魏曹先生 <1992414357@qq.com>2026-04-26 00:59:20 +0800
committer魏曹先生 <1992414357@qq.com>2026-04-26 00:59:20 +0800
commit94da1b889857e8f936335ebea50c62fcfb3b7c58 (patch)
treee70a98fd30b7433f196c21f78e417e71e0758576 /mingling_macros
parent388dc03dcfcdd2b64865c71dca23f2e57916437e (diff)
Add early return for help flag in dispatcher_clap macro
Diffstat (limited to 'mingling_macros')
-rw-r--r--mingling_macros/src/dispatcher_clap.rs6
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()