formatGlobalUsage method

String formatGlobalUsage({
  1. bool includeDescription = true,
})
inherited

Formats global usage, grouping commands by namespace.

Implementation

String formatGlobalUsage({bool includeDescription = true}) {
  final buffer = StringBuffer();

  if (includeDescription && description.trim().isNotEmpty) {
    buffer.writeln(description.trim());
    buffer.writeln();
  }

  buffer.writeln(_heading('Usage:'));
  buffer.writeln('  ${invocation.trim()}');
  buffer.writeln();

  buffer.writeln(_heading('Options:'));
  final globalOptions = argParser.usage.trimRight();
  if (globalOptions.isNotEmpty) {
    buffer.writeln(indentBlock(_formatOptionsUsage(globalOptions), 2));
  }
  buffer.writeln();

  final commandEntries = _uniqueTopLevelEntries();
  if (commandEntries.isNotEmpty) {
    final listing = formatCommandListing(
      commandEntries,
      namespaceSeparator: namespaceSeparator,
      styleNamespace: _heading,
      styleCommand: _command,
    );
    if (listing.isNotEmpty) {
      buffer.writeln(_heading('Available commands:'));
      buffer.writeln(listing);
      buffer.writeln();
      buffer.writeln(
        'Run ${_emphasize('"$executableName <command> --help"')} for more information about a command.',
      );
    }
  }

  return buffer.toString().trimRight();
}