[PATCH v3 0/8] show negatability of options in short help
From: René Scharfe <hidden>
Date: 2023-08-05 14:33:17
Changes since v2:
- Rebase, affects only patch 5.
- Add patch 7 for documenting negative options on their own line.
- Add preparatory patch 6.
- Add bonus patch 8.
subtree: disallow --no-{help,quiet,debug,branch,message}
t1502, docs: disallow --no-help
t1502: move optionspec help output to a file
t1502: test option negation
parse-options: show negatability of options in short help
parse-options: factor out usage_indent() and usage_padding()
parse-options: no --[no-]no-...
parse-options: simplify usage_padding()
Documentation/git-rev-parse.txt | 10 +--
contrib/subtree/git-subtree.sh | 10 +--
contrib/subtree/t/t7900-subtree.sh | 2 +-
parse-options.c | 70 ++++++++++-----
t/t0040-parse-options.sh | 44 +++++-----
t/t1502-rev-parse-parseopt.sh | 131 ++++++++++++-----------------
t/t1502/.gitattributes | 1 +
t/t1502/optionspec-neg | 8 ++
t/t1502/optionspec-neg.help | 12 +++
t/t1502/optionspec.help | 36 ++++++++
10 files changed, 199 insertions(+), 125 deletions(-)
create mode 100644 t/t1502/.gitattributes
create mode 100644 t/t1502/optionspec-neg
create mode 100644 t/t1502/optionspec-neg.help
create mode 100755 t/t1502/optionspec.help
Range-Diff gegen v2:
1: 26c03bd70c = 1: ee280b3484 subtree: disallow --no-{help,quiet,debug,branch,message}
2: ad9e7d1393 = 2: 556e79ce55 t1502, docs: disallow --no-help
3: 1bb68a4a40 = 3: 274e65ec1c t1502: move optionspec help output to a file
4: 47ab167d1c = 4: 89b0455305 t1502: test option negation
5: 961c5dfcf7 ! 5: 7cd3abcff7 parse-options: show negatability of options in short help
@@ t/t0040-parse-options.sh: usage: test-tool parse-options <options>
+ set file to <file>
String options
-- -s, --string <string>
-+ -s, --[no-]string <string>
- get a string
+- -s, --string <string> get a string
- --string2 <str> get another string
- --st <st> get another string (pervert ordering)
++ -s, --[no-]string <string>
++ get a string
+ --[no-]string2 <str> get another string
+ --[no-]st <st> get another string (pervert ordering)
-o <str> get another string
+ --longhelp help text of this entry
+ spans multiple lines
- --list <str> add str to list
+ --[no-]list <str> add str to list
@@ t/t1502/optionspec.help: usage: some-command [options] <args>...
An option group Header
-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
++ -d, --[no-]data[=...] short and long option with an optional argument
Argument hints
-B <arg> short option required argument
@@ t/t1502/optionspec.help: usage: some-command [options] <args>...
+ --[no-]pair <key=value>
+ with an equals sign in the hint
+ --[no-]aswitch help te=t contains? fl*g characters!`
-+ --[no-]bswitch <hint>
-+ hint has trailing tab character
++ --[no-]bswitch <hint> hint has trailing tab character
+ --[no-]cswitch switch has trailing tab character
-+ --[no-]short-hint <a>
-+ with a one symbol hint
++ --[no-]short-hint <a> with a one symbol hint
Extras
- --extra1 line above used to cause a segfault but no longer does
-: ---------- > 6: 46dcdb902d parse-options: factor out usage_indent() and usage_padding()
-: ---------- > 7: fdeca0d6d2 parse-options: no --[no-]no-...
-: ---------- > 8: 08b2d1e861 parse-options: simplify usage_padding()
--
2.41.0