Skip to content

Commit 3f80d1b

Browse files
committed
LibCLI: Align flags when printing --help
1 parent 6a97373 commit 3f80d1b

1 file changed

Lines changed: 15 additions & 5 deletions

File tree

Libraries/LibCLI/ArgumentParser.cpp

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -162,15 +162,25 @@ void ArgumentParser::print_usage_and_exit(int exit_code) const
162162
}
163163
log->format("\n\n");
164164
log->format("FLAGS:\n");
165+
u32 longest_short_flag = 0;
166+
u32 longest_long_flag = 0;
165167
for (u32 i = 0; i < flags.count; i++) {
166168
auto flag = flags.items[i];
167-
log->format(" %.*s, %.*s",
169+
if (flag.short_name.size() > longest_short_flag)
170+
longest_short_flag = flag.short_name.size();
171+
if (flag.long_name.size() > longest_long_flag)
172+
longest_long_flag = flag.long_name.size();
173+
}
174+
175+
for (u32 i = 0; i < flags.count; i++) {
176+
auto flag = flags.items[i];
177+
log->format(" %.*s%*c%.*s%*c",
168178
flag.short_name.size(), flag.short_name.data(),
169-
flag.long_name.size(), flag.long_name.data()
179+
(longest_short_flag - flag.short_name.size() + 1), ' ',
180+
flag.long_name.size(), flag.long_name.data(),
181+
(longest_long_flag - flag.long_name.size() + 1), ' '
170182
);
171-
// for (; bytes < 40; bytes++)
172-
// out.write(" "sv).ignore();
173-
log->format("%.*s", flag.explanation.size(), flag.explanation.data());
183+
log->format("%.*s\n", flag.explanation.size(), flag.explanation.data());
174184
}
175185
log->format("\n");
176186
if (options.count != 0) {

0 commit comments

Comments
 (0)