Skip to content

Commit 918f7cb

Browse files
committed
fix(man): add ellipsis for multi-value positional arguments
Append `...` to positional arguments that accept multiple values (e.g. `[FILES]...`), matching the `--help` output. Applies to both the SYNOPSIS and OPTIONS sections. https://claude.ai/code/session_01CrXuWDMVQsiUBoy6ceACsF
1 parent cb4dbb6 commit 918f7cb

2 files changed

Lines changed: 14 additions & 6 deletions

File tree

exports/pdu.1

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
.SH NAME
33
pdu \- Summarize disk usage of the set of files, recursively for directories.
44
.SH SYNOPSIS
5-
\fBpdu\fR [\fB\-\-json\-input\fR] [\fB\-\-json\-output\fR] [\fB\-b\fR|\fB\-\-bytes\-format\fR \fIBYTES_FORMAT\fR] [\fB\-H\fR|\fB\-\-deduplicate\-hardlinks\fR] [\fB\-x\fR|\fB\-\-one\-file\-system\fR] [\fB\-\-top\-down\fR] [\fB\-\-align\-right\fR] [\fB\-q\fR|\fB\-\-quantity\fR \fIQUANTITY\fR] [\fB\-d\fR|\fB\-\-max\-depth\fR \fIMAX_DEPTH\fR] [\fB\-w\fR|\fB\-\-total\-width\fR \fITOTAL_WIDTH\fR] [\fB\-\-column\-width\fR \fITREE_WIDTH\fR \fIBAR_WIDTH\fR] [\fB\-m\fR|\fB\-\-min\-ratio\fR \fIMIN_RATIO\fR] [\fB\-\-no\-sort\fR] [\fB\-s\fR|\fB\-\-silent\-errors\fR] [\fB\-p\fR|\fB\-\-progress\fR] [\fB\-\-threads\fR \fITHREADS\fR] [\fB\-\-omit\-json\-shared\-details\fR] [\fB\-\-omit\-json\-shared\-summary\fR] [\fB\-h\fR|\fB\-\-help\fR] [\fB\-V\fR|\fB\-\-version\fR] [\fIFILES\fR]
5+
\fBpdu\fR [\fB\-\-json\-input\fR] [\fB\-\-json\-output\fR] [\fB\-b\fR|\fB\-\-bytes\-format\fR \fIBYTES_FORMAT\fR] [\fB\-H\fR|\fB\-\-deduplicate\-hardlinks\fR] [\fB\-x\fR|\fB\-\-one\-file\-system\fR] [\fB\-\-top\-down\fR] [\fB\-\-align\-right\fR] [\fB\-q\fR|\fB\-\-quantity\fR \fIQUANTITY\fR] [\fB\-d\fR|\fB\-\-max\-depth\fR \fIMAX_DEPTH\fR] [\fB\-w\fR|\fB\-\-total\-width\fR \fITOTAL_WIDTH\fR] [\fB\-\-column\-width\fR \fITREE_WIDTH\fR \fIBAR_WIDTH\fR] [\fB\-m\fR|\fB\-\-min\-ratio\fR \fIMIN_RATIO\fR] [\fB\-\-no\-sort\fR] [\fB\-s\fR|\fB\-\-silent\-errors\fR] [\fB\-p\fR|\fB\-\-progress\fR] [\fB\-\-threads\fR \fITHREADS\fR] [\fB\-\-omit\-json\-shared\-details\fR] [\fB\-\-omit\-json\-shared\-summary\fR] [\fB\-h\fR|\fB\-\-help\fR] [\fB\-V\fR|\fB\-\-version\fR] [\fIFILES\fR]...
66
.SH DESCRIPTION
77
Summarize disk usage of the set of files, recursively for directories.
88
.PP
@@ -11,7 +11,7 @@ Copyright: Apache\-2.0 © 2021 Hoàng Văn Khải <https://github.com/KSXGitHub/
1111
Sponsor: https://github.com/sponsors/KSXGitHub
1212
.SH OPTIONS
1313
.TP
14-
[\fIFILES\fR]
14+
[\fIFILES\fR]...
1515
List of files and/or directories
1616
.TP
1717
\fB\-\-json\-input\fR

src/man_page.rs

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -115,16 +115,23 @@ fn render_synopsis_option(out: &mut String, arg: &Arg) {
115115
out.push(']');
116116
}
117117

118+
fn is_multiple(arg: &Arg) -> bool {
119+
arg.get_num_args()
120+
.map(|range| range.max_values() > 1)
121+
.unwrap_or(false)
122+
}
123+
118124
fn render_synopsis_positional(out: &mut String, arg: &Arg) {
119125
let name = arg
120126
.get_value_names()
121127
.and_then(|names| names.first())
122128
.map(|name| name.as_str())
123129
.unwrap_or_else(|| arg.get_id().as_str());
130+
let ellipsis = if is_multiple(arg) { "..." } else { "" };
124131
if arg.is_required_set() {
125-
write!(out, "\\fI{}\\fR", roff_escape(name)).unwrap();
132+
write!(out, "\\fI{}\\fR{ellipsis}", roff_escape(name)).unwrap();
126133
} else {
127-
write!(out, "[\\fI{}\\fR]", roff_escape(name)).unwrap();
134+
write!(out, "[\\fI{}\\fR]{ellipsis}", roff_escape(name)).unwrap();
128135
}
129136
}
130137

@@ -194,10 +201,11 @@ fn render_option_header_positional(out: &mut String, arg: &Arg) {
194201
.and_then(|names| names.first())
195202
.map(|name| name.as_str())
196203
.unwrap_or_else(|| arg.get_id().as_str());
204+
let ellipsis = if is_multiple(arg) { "..." } else { "" };
197205
if arg.is_required_set() {
198-
writeln!(out, "\\fI{name}\\fR").unwrap();
206+
writeln!(out, "\\fI{name}\\fR{ellipsis}").unwrap();
199207
} else {
200-
writeln!(out, "[\\fI{name}\\fR]").unwrap();
208+
writeln!(out, "[\\fI{name}\\fR]{ellipsis}").unwrap();
201209
}
202210
}
203211

0 commit comments

Comments
 (0)