Subject: Re: [PATCH 1/2] parse-options: Add support for dumping out long options

From: Stephen Boyd <[email-masked]>
Date: Thu, 12 Apr 2012 00:42:50 -0700

On 04/11/2012 03:51 AM, Felipe Contreras wrote:
> On Wed, Apr 11, 2012 at 1:29 PM, Stephen Boyd <[email-masked]> wrote:
>> The bash completion script wants to know what the long options are for a
>> certain command at runtime. Add a magical long option that nobody could
>> possibly ever use (--dump-raw-long-options) to get this information.
> 
> I thought about doing this, but I would like more than just dumping
> the options. In zsh one can show more than just the options; each
> option can have a description.

Cool. I don't use zsh but it sounds interesting. Perhaps the magical
long option should grow an optional argument? i.e.

	--dump-raw-long-option=zsh

which would dump the options in a format that zsh would like?

Alternatively, we can make a tiny option description grammar that's
easily parsed. I probably won't have time for this any time soon though.

> 
> I was thinking on something like 'git help --raw'. We also need
> something like that to list all the plumbing commands, and options for
> certain options, like merge strategies, and so on. Perhaps it would
> even make sense to have a new 'git raw-help' command.
> 

I'd like to avoid tying the long option stuff to git help so that other
users of parse-options besides git (perhaps perf?) get the dumping
support for free. Actually it works well for 'git notes <subcommand>'
right now so it probably has to stay tied to each git command. Plus I
think we've covered merge strategies and command lists already so I
don't know how useful 'git help --raw' would be.

I have been pondering ways to get all the possible config keys
dynamically. That would remove a huge list (~2000 lines) in the
completion script that always needs updating. Doing that would probably
require some sort of grep over all the source files and a special key
comparison function to look for (#define CONFIG_MATCH strcmp might
work). Even then I don't know how we would handle color.branch.* and
similar things. Maybe we would just do those by hand.