]> git.ipfire.org Git - thirdparty/git.git/commitdiff
builtin/hook.c: let parse-options parse subcommands
authorSZEDER Gábor <szeder.dev@gmail.com>
Fri, 19 Aug 2022 16:04:04 +0000 (18:04 +0200)
committerJunio C Hamano <gitster@pobox.com>
Fri, 19 Aug 2022 18:13:15 +0000 (11:13 -0700)
'git hook' parses its currently only subcommand with an if statement.
parse-options has just learned to parse subcommands, so let's use that
facility instead, with the benefits of shorter code, handling missing
or unknown subcommands, and listing subcommands for Bash completion.

Signed-off-by: SZEDER Gábor <szeder.dev@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/hook.c

index 54e5c6ec933f4c032fa03d514d8f7e93e29883e5..b6530d189ad08dc76367fca61cc8eae95be13ffd 100644 (file)
@@ -67,18 +67,14 @@ usage:
 
 int cmd_hook(int argc, const char **argv, const char *prefix)
 {
+       parse_opt_subcommand_fn *fn = NULL;
        struct option builtin_hook_options[] = {
+               OPT_SUBCOMMAND("run", &fn, run),
                OPT_END(),
        };
 
        argc = parse_options(argc, argv, NULL, builtin_hook_options,
-                            builtin_hook_usage, PARSE_OPT_STOP_AT_NON_OPTION);
-       if (!argc)
-               goto usage;
+                            builtin_hook_usage, 0);
 
-       if (!strcmp(argv[0], "run"))
-               return run(argc, argv, prefix);
-
-usage:
-       usage_with_options(builtin_hook_usage, builtin_hook_options);
+       return fn(argc, argv, prefix);
 }