Re: [PATCH v2 4/5] builtin/help: add --config-all-for-completion
- From
Patrick Steinhardt <ps@pks.im>
- Date
- Feb 8, 2024, 07:42 UTC
- Message-ID
- <ZcSF2mw-zR1d38UG@tanuki>
- In-Reply-To
- <d442a039b27820dbd44e604df75ec026b8243d47.1706534882.git.gitgitgadget@gmail.com>
On Mon, Jan 29, 2024 at 01:28:00PM +0000, Philippe Blain via GitGitGadget wrote:
Show 7 quoted lines
> 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?
Show 44 quoted lines
> 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