format method
Renders all visible help for registry.
Implementation
@override
String format(CommandRegistry registry) {
final buffer = StringBuffer();
final positionals = <FormattedString>[
...registry.mandatoryPositionals.map(_requiredPositional),
...registry.discretionaryPositionals.map(_optionalPositional),
if (registry.variadic case final variadic?) _variadic(variadic),
];
final positionalExpression = positionals
.map((positional) => positional.string)
.join(' ');
final commandLine =
'${registry.fullPath.join(' ')}${positionals.isEmpty ? '' : ' $positionalExpression'}';
buffer
..writeln(
MambaColors.primary("$commandLine '${registry.shortDescription}'"),
)
..writeln();
final longDescription = registry.longDescription;
if (longDescription != null) {
formatLongDescription(buffer, longDescription);
buffer.writeln();
}
final variadic = registry.variadic;
final variadicDescription = variadic?.description;
if (variadic != null && variadicDescription != null) {
_writeSection(buffer, 'Arguments', [
_variadicEntry(variadic, variadicDescription),
]);
buffer.writeln();
}
_writeSection(
buffer,
'Flags',
registry.applicableFlags
.where((flag) => !flag.hidden)
.map(_flag)
.toList(),
);
buffer.writeln();
_writeSection(buffer, 'Accessor flags', _accessors(registry));
buffer.writeln();
_writeSection(buffer, 'Options', [
...registry.applicableOptions
.where((option) => !option.hidden)
.map(_option),
...registry.pairedOptionGroups.map(_pairedOptions),
...registry.selectedOptions.map(_selectedOptions),
]);
_writeSection(
buffer,
'Commands',
registry.commandRegistries
.map(
(command) =>
'${command.name} ${formatIntoEntryDescription(command.shortDescription).string}',
)
.toList(),
);
return buffer.toString();
}