зеркало из https://github.com/microsoft/git.git
parse-opt: bring PARSE_OPT_HIDDEN and NONEG to git-rev-parse --parseopt
Signed-off-by: Pierre Habouzit <madcoder@debian.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
c14918415a
Коммит
ff962a3f19
|
@ -325,7 +325,7 @@ The lines after the separator describe the options.
|
||||||
Each line of options has this format:
|
Each line of options has this format:
|
||||||
|
|
||||||
------------
|
------------
|
||||||
<opt_spec><arg_spec>? SP+ help LF
|
<opt_spec><flags>* SP+ help LF
|
||||||
------------
|
------------
|
||||||
|
|
||||||
`<opt_spec>`::
|
`<opt_spec>`::
|
||||||
|
@ -334,10 +334,17 @@ Each line of options has this format:
|
||||||
is necessary. `h,help`, `dry-run` and `f` are all three correct
|
is necessary. `h,help`, `dry-run` and `f` are all three correct
|
||||||
`<opt_spec>`.
|
`<opt_spec>`.
|
||||||
|
|
||||||
`<arg_spec>`::
|
`<flags>`::
|
||||||
an `<arg_spec>` tells the option parser if the option has an argument
|
`<flags>` are of `*`, `=`, `?` or `!`.
|
||||||
(`=`), an optional one (`?` though its use is discouraged) or none
|
* Use `=` if the option takes an argument.
|
||||||
(no `<arg_spec>` in that case).
|
|
||||||
|
* Use `?` to mean that the option is optional (though its use is discouraged).
|
||||||
|
|
||||||
|
* Use `*` to mean that this option should not be listed in the usage
|
||||||
|
generated for the `-h` argument. It's shown for `--help-all` as
|
||||||
|
documented in linkgit:gitcli[5].
|
||||||
|
|
||||||
|
* Use `!` to not make the corresponding negated long option available.
|
||||||
|
|
||||||
The remainder of the line, after stripping the spaces, is used
|
The remainder of the line, after stripping the spaces, is used
|
||||||
as the help associated to the option.
|
as the help associated to the option.
|
||||||
|
|
|
@ -322,18 +322,24 @@ static int cmd_parseopt(int argc, const char **argv, const char *prefix)
|
||||||
o->type = OPTION_CALLBACK;
|
o->type = OPTION_CALLBACK;
|
||||||
o->help = xstrdup(skipspaces(s));
|
o->help = xstrdup(skipspaces(s));
|
||||||
o->value = &parsed;
|
o->value = &parsed;
|
||||||
|
o->flags = PARSE_OPT_NOARG;
|
||||||
o->callback = &parseopt_dump;
|
o->callback = &parseopt_dump;
|
||||||
switch (s[-1]) {
|
while (s > sb.buf && strchr("*=?!", s[-1])) {
|
||||||
case '=':
|
switch (*--s) {
|
||||||
s--;
|
case '=':
|
||||||
break;
|
o->flags &= ~PARSE_OPT_NOARG;
|
||||||
case '?':
|
break;
|
||||||
o->flags = PARSE_OPT_OPTARG;
|
case '?':
|
||||||
s--;
|
o->flags &= ~PARSE_OPT_NOARG;
|
||||||
break;
|
o->flags |= PARSE_OPT_OPTARG;
|
||||||
default:
|
break;
|
||||||
o->flags = PARSE_OPT_NOARG;
|
case '!':
|
||||||
break;
|
o->flags |= PARSE_OPT_NONEG;
|
||||||
|
break;
|
||||||
|
case '*':
|
||||||
|
o->flags |= PARSE_OPT_HIDDEN;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (s - sb.buf == 1) /* short option only */
|
if (s - sb.buf == 1) /* short option only */
|
||||||
|
|
Загрузка…
Ссылка в новой задаче