Message ID | d442a039b27820dbd44e604df75ec026b8243d47.1706534882.git.gitgitgadget@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | completion: remove hardcoded config variable names | expand |
On Mon, Jan 29, 2024 at 01:28:00PM +0000, Philippe Blain via GitGitGadget wrote: > From: Philippe Blain <levraiphilippeblain@gmail.com> > > There is currently no machine-friendly way to show _all_ configuration > variables from the command line. 'git help --config' does show them all, > but it also sets up the pager. 'git help --config-for-completion' omits > some variables (those containing wildcards, for example) and 'git help > --config-section-for-completion' shows only top-level section names. You can invoke `git --no-pager help --config` so that Git does not set up the pager. Is there a reason why we can't use that? > In a following commit we will want to have access to a list of all > configuration variables from the Bash completion script. As such, add a > new mode for the command, HELP_ACTION_CONFIG_ALL_FOR_COMPLETION, > triggered by the new option '--config-all-for-completion'. In this mode, > show all variables, just as HELP_ACTION_CONFIG, but do not set up the > pager. > > Signed-off-by: Philippe Blain <levraiphilippeblain@gmail.com> > --- > builtin/help.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/builtin/help.c b/builtin/help.c > index dc1fbe2b986..dacaeb10bf4 100644 > --- a/builtin/help.c > +++ b/builtin/help.c > @@ -50,6 +50,7 @@ static enum help_action { > HELP_ACTION_DEVELOPER_INTERFACES, > HELP_ACTION_CONFIG_FOR_COMPLETION, > HELP_ACTION_CONFIG_SECTIONS_FOR_COMPLETION, > + HELP_ACTION_CONFIG_ALL_FOR_COMPLETION, > } cmd_mode; > > static const char *html_path; > @@ -86,6 +87,8 @@ static struct option builtin_help_options[] = { > HELP_ACTION_CONFIG_FOR_COMPLETION, PARSE_OPT_HIDDEN), > OPT_CMDMODE_F(0, "config-sections-for-completion", &cmd_mode, "", > HELP_ACTION_CONFIG_SECTIONS_FOR_COMPLETION, PARSE_OPT_HIDDEN), > + OPT_CMDMODE_F(0, "config-all-for-completion", &cmd_mode, "", > + HELP_ACTION_CONFIG_ALL_FOR_COMPLETION, PARSE_OPT_HIDDEN), > > OPT_END(), > }; > @@ -670,6 +673,10 @@ int cmd_help(int argc, const char **argv, const char *prefix) > opt_mode_usage(argc, "--config-for-completion", help_format); > list_config_help(SHOW_CONFIG_VARS); > return 0; > + case HELP_ACTION_CONFIG_ALL_FOR_COMPLETION: > + opt_mode_usage(argc, "--config-all-for-completion", help_format); > + list_config_help(SHOW_CONFIG_HUMAN); > + return 0; > case HELP_ACTION_USER_INTERFACES: > opt_mode_usage(argc, "--user-interfaces", help_format); > list_user_interfaces_help(); We should add a testcase to "t0012-help.sh" to exercise this new feature. That would also help show the reviewer what exactly it will end up printing. Patrick
Le 2024-02-08 à 02:42, Patrick Steinhardt a écrit : > On Mon, Jan 29, 2024 at 01:28:00PM +0000, Philippe Blain via GitGitGadget wrote: >> From: Philippe Blain <levraiphilippeblain@gmail.com> >> >> There is currently no machine-friendly way to show _all_ configuration >> variables from the command line. 'git help --config' does show them all, >> but it also sets up the pager. 'git help --config-for-completion' omits >> some variables (those containing wildcards, for example) and 'git help >> --config-section-for-completion' shows only top-level section names. > > You can invoke `git --no-pager help --config` so that Git does not set > up the pager. Is there a reason why we can't use that? I'm glad to say there is no reason we can't use that! I just did not think of it and dived straight into the C code. I'll use that in v3 and just drop this patch from the series. Thanks! Philippe.
diff --git a/builtin/help.c b/builtin/help.c index dc1fbe2b986..dacaeb10bf4 100644 --- a/builtin/help.c +++ b/builtin/help.c @@ -50,6 +50,7 @@ static enum help_action { HELP_ACTION_DEVELOPER_INTERFACES, HELP_ACTION_CONFIG_FOR_COMPLETION, HELP_ACTION_CONFIG_SECTIONS_FOR_COMPLETION, + HELP_ACTION_CONFIG_ALL_FOR_COMPLETION, } cmd_mode; static const char *html_path; @@ -86,6 +87,8 @@ static struct option builtin_help_options[] = { HELP_ACTION_CONFIG_FOR_COMPLETION, PARSE_OPT_HIDDEN), OPT_CMDMODE_F(0, "config-sections-for-completion", &cmd_mode, "", HELP_ACTION_CONFIG_SECTIONS_FOR_COMPLETION, PARSE_OPT_HIDDEN), + OPT_CMDMODE_F(0, "config-all-for-completion", &cmd_mode, "", + HELP_ACTION_CONFIG_ALL_FOR_COMPLETION, PARSE_OPT_HIDDEN), OPT_END(), }; @@ -670,6 +673,10 @@ int cmd_help(int argc, const char **argv, const char *prefix) opt_mode_usage(argc, "--config-for-completion", help_format); list_config_help(SHOW_CONFIG_VARS); return 0; + case HELP_ACTION_CONFIG_ALL_FOR_COMPLETION: + opt_mode_usage(argc, "--config-all-for-completion", help_format); + list_config_help(SHOW_CONFIG_HUMAN); + return 0; case HELP_ACTION_USER_INTERFACES: opt_mode_usage(argc, "--user-interfaces", help_format); list_user_interfaces_help();