parse-options: show negatability of options in short help
Add a "[no-]" prefix to options without the flag PARSE_OPT_NONEG to document the fact that you can negate them. This looks a bit strange for options that already start with "no-", e.g. for the option --no-name of git show-branch: --[no-]no-name suppress naming strings You can actually use --no-no-name as an alias of --name, so the short help is not wrong. If we strip off any of the "no-"s, we lose either the ability to see if the remaining one belongs to the documented variant or to see if it can be negated. Signed-off-by: René Scharfe <l.s.r@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
d5dc68f730
commit
e8e5d294dc
@ -424,10 +424,10 @@ usage: some-command [<options>] <args>...
|
|||||||
some-command does foo and bar!
|
some-command does foo and bar!
|
||||||
|
|
||||||
-h, --help show the help
|
-h, --help show the help
|
||||||
--foo some nifty option --foo
|
--[no-]foo some nifty option --foo
|
||||||
--bar ... some cool option --bar with an argument
|
--[no-]bar ... some cool option --bar with an argument
|
||||||
--baz <arg> another cool option --baz with a named argument
|
--[no-]baz <arg> another cool option --baz with a named argument
|
||||||
--qux[=<path>] qux may take a path argument but has meaning by itself
|
--[no-]qux[=<path>] qux may take a path argument but has meaning by itself
|
||||||
|
|
||||||
An option group Header
|
An option group Header
|
||||||
-C[...] option C with an optional argument
|
-C[...] option C with an optional argument
|
||||||
|
@ -71,7 +71,7 @@ test_expect_success 'shows short help text for -h' '
|
|||||||
test_expect_code 129 git subtree -h >out 2>err &&
|
test_expect_code 129 git subtree -h >out 2>err &&
|
||||||
test_must_be_empty err &&
|
test_must_be_empty err &&
|
||||||
grep -e "^ *or: git subtree pull" out &&
|
grep -e "^ *or: git subtree pull" out &&
|
||||||
grep -e --annotate out
|
grep -F -e "--[no-]annotate" out
|
||||||
'
|
'
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -1137,8 +1137,14 @@ static enum parse_opt_result usage_with_options_internal(struct parse_opt_ctx_t
|
|||||||
}
|
}
|
||||||
if (opts->long_name && opts->short_name)
|
if (opts->long_name && opts->short_name)
|
||||||
pos += fprintf(outfile, ", ");
|
pos += fprintf(outfile, ", ");
|
||||||
if (opts->long_name)
|
if (opts->long_name) {
|
||||||
pos += fprintf(outfile, "--%s", opts->long_name);
|
const char *long_name = opts->long_name;
|
||||||
|
if (opts->flags & PARSE_OPT_NONEG)
|
||||||
|
pos += fprintf(outfile, "--%s", long_name);
|
||||||
|
else
|
||||||
|
pos += fprintf(outfile, "--[no-]%s", long_name);
|
||||||
|
}
|
||||||
|
|
||||||
if (opts->type == OPTION_NUMBER)
|
if (opts->type == OPTION_NUMBER)
|
||||||
pos += utf8_fprintf(outfile, _("-NUM"));
|
pos += utf8_fprintf(outfile, _("-NUM"));
|
||||||
|
|
||||||
|
@ -13,30 +13,34 @@ usage: test-tool parse-options <options>
|
|||||||
|
|
||||||
A helper function for the parse-options API.
|
A helper function for the parse-options API.
|
||||||
|
|
||||||
--yes get a boolean
|
--[no-]yes get a boolean
|
||||||
-D, --no-doubt begins with 'no-'
|
-D, --[no-]no-doubt begins with 'no-'
|
||||||
-B, --no-fear be brave
|
-B, --no-fear be brave
|
||||||
-b, --boolean increment by one
|
-b, --[no-]boolean increment by one
|
||||||
-4, --or4 bitwise-or boolean with ...0100
|
-4, --[no-]or4 bitwise-or boolean with ...0100
|
||||||
--neg-or4 same as --no-or4
|
--[no-]neg-or4 same as --no-or4
|
||||||
|
|
||||||
-i, --integer <n> get a integer
|
-i, --[no-]integer <n>
|
||||||
|
get a integer
|
||||||
-j <n> get a integer, too
|
-j <n> get a integer, too
|
||||||
-m, --magnitude <n> get a magnitude
|
-m, --magnitude <n> get a magnitude
|
||||||
--set23 set integer to 23
|
--[no-]set23 set integer to 23
|
||||||
--mode1 set integer to 1 (cmdmode option)
|
--mode1 set integer to 1 (cmdmode option)
|
||||||
--mode2 set integer to 2 (cmdmode option)
|
--mode2 set integer to 2 (cmdmode option)
|
||||||
-L, --length <str> get length of <str>
|
-L, --[no-]length <str>
|
||||||
-F, --file <file> set file to <file>
|
get length of <str>
|
||||||
|
-F, --[no-]file <file>
|
||||||
|
set file to <file>
|
||||||
|
|
||||||
String options
|
String options
|
||||||
-s, --string <string> get a string
|
-s, --[no-]string <string>
|
||||||
--string2 <str> get another string
|
get a string
|
||||||
--st <st> get another string (pervert ordering)
|
--[no-]string2 <str> get another string
|
||||||
|
--[no-]st <st> get another string (pervert ordering)
|
||||||
-o <str> get another string
|
-o <str> get another string
|
||||||
--longhelp help text of this entry
|
--longhelp help text of this entry
|
||||||
spans multiple lines
|
spans multiple lines
|
||||||
--list <str> add str to list
|
--[no-]list <str> add str to list
|
||||||
|
|
||||||
Magic arguments
|
Magic arguments
|
||||||
-NUM set integer to NUM
|
-NUM set integer to NUM
|
||||||
@ -45,16 +49,17 @@ Magic arguments
|
|||||||
--no-ambiguous negative ambiguity
|
--no-ambiguous negative ambiguity
|
||||||
|
|
||||||
Standard options
|
Standard options
|
||||||
--abbrev[=<n>] use <n> digits to display object names
|
--[no-]abbrev[=<n>] use <n> digits to display object names
|
||||||
-v, --verbose be verbose
|
-v, --[no-]verbose be verbose
|
||||||
-n, --dry-run dry run
|
-n, --[no-]dry-run dry run
|
||||||
-q, --quiet be quiet
|
-q, --[no-]quiet be quiet
|
||||||
--expect <string> expected output in the variable dump
|
--[no-]expect <string>
|
||||||
|
expected output in the variable dump
|
||||||
|
|
||||||
Alias
|
Alias
|
||||||
-A, --alias-source <string>
|
-A, --[no-]alias-source <string>
|
||||||
get a string
|
get a string
|
||||||
-Z, --alias-target <string>
|
-Z, --[no-]alias-target <string>
|
||||||
alias of --alias-source
|
alias of --alias-source
|
||||||
|
|
||||||
EOF
|
EOF
|
||||||
|
@ -111,7 +111,7 @@ test_expect_success 'test --parseopt help-all output hidden switches' '
|
|||||||
|
|
|
|
||||||
| some-command does foo and bar!
|
| some-command does foo and bar!
|
||||||
|
|
|
|
||||||
| --hidden1 A hidden switch
|
| --[no-]hidden1 A hidden switch
|
||||||
|
|
|
|
||||||
|EOF
|
|EOF
|
||||||
END_EXPECT
|
END_EXPECT
|
||||||
|
@ -3,8 +3,8 @@ usage: some-command [options] <args>...
|
|||||||
|
|
||||||
some-command does foo and bar!
|
some-command does foo and bar!
|
||||||
|
|
||||||
--foo can be negated
|
--[no-]foo can be negated
|
||||||
--no-bar can be positivated
|
--[no-]no-bar can be positivated
|
||||||
--positive-only cannot be negated
|
--positive-only cannot be negated
|
||||||
--no-negative cannot be positivated
|
--no-negative cannot be positivated
|
||||||
|
|
||||||
|
@ -4,31 +4,33 @@ usage: some-command [options] <args>...
|
|||||||
some-command does foo and bar!
|
some-command does foo and bar!
|
||||||
|
|
||||||
-h, --help show the help
|
-h, --help show the help
|
||||||
--foo some nifty option --foo
|
--[no-]foo some nifty option --foo
|
||||||
--bar ... some cool option --bar with an argument
|
--[no-]bar ... some cool option --bar with an argument
|
||||||
-b, --baz a short and long option
|
-b, --[no-]baz a short and long option
|
||||||
|
|
||||||
An option group Header
|
An option group Header
|
||||||
-C[...] option C with an optional argument
|
-C[...] option C with an optional argument
|
||||||
-d, --data[=...] short and long option with an optional argument
|
-d, --[no-]data[=...] short and long option with an optional argument
|
||||||
|
|
||||||
Argument hints
|
Argument hints
|
||||||
-B <arg> short option required argument
|
-B <arg> short option required argument
|
||||||
--bar2 <arg> long option required argument
|
--[no-]bar2 <arg> long option required argument
|
||||||
-e, --fuz <with-space>
|
-e, --[no-]fuz <with-space>
|
||||||
short and long option required argument
|
short and long option required argument
|
||||||
-s[<some>] short option optional argument
|
-s[<some>] short option optional argument
|
||||||
--long[=<data>] long option optional argument
|
--[no-]long[=<data>] long option optional argument
|
||||||
-g, --fluf[=<path>] short and long option optional argument
|
-g, --[no-]fluf[=<path>]
|
||||||
--longest <very-long-argument-hint>
|
short and long option optional argument
|
||||||
|
--[no-]longest <very-long-argument-hint>
|
||||||
a very long argument hint
|
a very long argument hint
|
||||||
--pair <key=value> with an equals sign in the hint
|
--[no-]pair <key=value>
|
||||||
--aswitch help te=t contains? fl*g characters!`
|
with an equals sign in the hint
|
||||||
--bswitch <hint> hint has trailing tab character
|
--[no-]aswitch help te=t contains? fl*g characters!`
|
||||||
--cswitch switch has trailing tab character
|
--[no-]bswitch <hint> hint has trailing tab character
|
||||||
--short-hint <a> with a one symbol hint
|
--[no-]cswitch switch has trailing tab character
|
||||||
|
--[no-]short-hint <a> with a one symbol hint
|
||||||
|
|
||||||
Extras
|
Extras
|
||||||
--extra1 line above used to cause a segfault but no longer does
|
--[no-]extra1 line above used to cause a segfault but no longer does
|
||||||
|
|
||||||
EOF
|
EOF
|
||||||
|
Reference in New Issue
Block a user