Re: [PATCH] rev-parse --parseopt: fix handling of optional arguments
- From
Nicolas Vigier <boklm@mars-attacks.org>
- Date
- Oct 15, 2013, 23:53 UTC
- Message-ID
- <20131015235314.GZ4589@mars-attacks.org>
- In-Reply-To
- <20131015231427.GF9464@google.com>
On Tue, 15 Oct 2013, Jonathan Nieder wrote:
Show 40 quoted lines
> Nicolas Vigier wrote: > > > $ cat /tmp/opt.sh > > #!/bin/sh > > OPTIONS_SPEC="\ > > git [options] > > -- > > q,quiet be quiet > > S,gpg-sign? GPG-sign commit" > > echo "$OPTIONS_SPEC" | git rev-parse --parseopt $parseopt_extra -- "$@" > > > > Then the following two commands give us the same result : > > > > $ /tmp/opt.sh -S -q > > set -- -S -q -- > > $ /tmp/opt.sh -S-q > > set -- -S '-q' -- > > > > We cannot know if '-q' is an argument to '-S' or a new option. > > Hmph. > > As Junio mentioned, inserting '' would be a backward-incompatible > change. I don't think it's worth breaking existing scripts. Probably > what is needed is a new parseopt special character with the new > semantics (e.g., > > Use ?? to mean the option has an optional argument. If the > option is supplied without its argument, the argument is taken > to be ''. > > or something like > > Use ?<default> to mean the option has an optional argument. If > the option is supplied without its argument and <default> is > nonempty, the argument is taken to be <default>. > > ). > > Sensible?
Yes, I think it's sensible. I will look at this and propose an other patch. Thanks.