From: Emily Shaffer <nasamuffin@xxxxxxxxxx> git-bugreport already rejected unrecognized flag arguments, like `--diaggnose`, but this doesn't help if the user's mistake was to forget the `--` in front of the argument. This can result in a user's intended argument not being parsed with no indication to the user that something went wrong. Since git-bugreport presently doesn't take any positionals at all, let's reject all positionals and give the user a usage hint. Signed-off-by: Emily Shaffer <nasamuffin@xxxxxxxxxx> --- Per Eric's suggestion, added a citation of the first positional arg found. I don't think it's necessary to unroll the entire argv array here, though. - Emily builtin/bugreport.c | 6 ++++++ t/t0091-bugreport.sh | 7 +++++++ 2 files changed, 13 insertions(+) diff --git a/builtin/bugreport.c b/builtin/bugreport.c index d2ae5c305d..8a69a23397 100644 --- a/builtin/bugreport.c +++ b/builtin/bugreport.c @@ -126,6 +126,12 @@ int cmd_bugreport(int argc, const char **argv, const char *prefix) argc = parse_options(argc, argv, prefix, bugreport_options, bugreport_usage, 0); + if (argc) { + if (argv[0]) + error(_("unknown argument `%s'"), argv[0]); + usage(bugreport_usage[0]); + } + /* Prepare the path to put the result */ prefixed_filename = prefix_filename(prefix, option_output ? option_output : ""); diff --git a/t/t0091-bugreport.sh b/t/t0091-bugreport.sh index f6998269be..5b1b3e8d07 100755 --- a/t/t0091-bugreport.sh +++ b/t/t0091-bugreport.sh @@ -69,6 +69,13 @@ test_expect_success 'incorrect arguments abort with usage' ' test_path_is_missing git-bugreport-* ' +test_expect_success 'incorrect positional arguments abort with usage and hint' ' + test_must_fail git bugreport false 2>output && + test_i18ngrep usage output && + test_i18ngrep false output && + test_path_is_missing git-bugreport-* +' + test_expect_success 'runs outside of a git dir' ' test_when_finished rm non-repo/git-bugreport-* && nongit git bugreport -- 2.42.0.758.gaed0368e0e-goog