Skip to content

Commit

Permalink
fix(derive): Give more meaningful error on missing subcommand
Browse files Browse the repository at this point in the history
Showing help on `$ cmd` makes sense but when an arg is present but not
subcommand, that suggests the user missed something, so we should show a
more specific error message.

Compatibility note: Settings we apply for subcommands have changed.

Fixes clap-rs#3280
  • Loading branch information
epage committed Feb 11, 2022
1 parent 8f201d8 commit d127305
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 5 deletions.
6 changes: 3 additions & 3 deletions clap_derive/src/derives/args.rs
Expand Up @@ -168,9 +168,9 @@ pub fn gen_augment(
quote!()
} else {
quote_spanned! { kind.span()=>
let #app_var = #app_var.setting(
clap::AppSettings::SubcommandRequiredElseHelp
);
let #app_var = #app_var
.subcommand_required(true)
.arg_required_else_help(true);
}
};

Expand Down
3 changes: 2 additions & 1 deletion clap_derive/src/derives/into_app.rs
Expand Up @@ -104,7 +104,8 @@ pub fn gen_for_enum(enum_name: &Ident, generics: &Generics, attrs: &[Attribute])
impl #impl_generics clap::IntoApp for #enum_name #ty_generics #where_clause {
fn into_app<'b>() -> clap::App<'b> {
let #app_var = clap::App::new(#name)
.setting(clap::AppSettings::SubcommandRequiredElseHelp);
.subcommand_required(true)
.arg_required_else_help(true);
<Self as clap::Subcommand>::augment_subcommands(#app_var)
}

Expand Down
4 changes: 3 additions & 1 deletion clap_derive/src/derives/subcommand.rs
Expand Up @@ -248,7 +248,9 @@ fn gen_augment(
let #subcommand_var = clap::App::new(#name);
let #subcommand_var = #subcommand_var #initial_app_methods;
let #subcommand_var = #arg_block;
let #subcommand_var = #subcommand_var.setting(clap::AppSettings::SubcommandRequiredElseHelp);
let #subcommand_var = #subcommand_var
.subcommand_required(true)
.arg_required_else_help(true);
#subcommand_var #final_from_attrs
});
};
Expand Down

0 comments on commit d127305

Please sign in to comment.