aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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()