format method

  1. @override
String format(
  1. CommandRegistry registry
)
override

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();
}