generatePlainCommandHelp function

String generatePlainCommandHelp(
  1. ToolDefinition tool,
  2. CommandDefinition cmd
)

Generate plain-text help for a command (no ANSI colors).

This is useful for tools that want to display help without using the markdown-style formatting of HelpGenerator.

Implementation

String generatePlainCommandHelp(ToolDefinition tool, CommandDefinition cmd) {
  final buf = StringBuffer();

  buf.writeln('${tool.name} v${tool.version}');
  buf.writeln();
  buf.writeln('Command: :${cmd.name}');
  if (cmd.aliases.isNotEmpty) {
    buf.writeln('Aliases: ${cmd.aliases.map((a) => ':$a').join(', ')}');
  }
  buf.writeln();
  buf.writeln(cmd.description);
  buf.writeln();

  // Command-specific options
  if (cmd.options.isNotEmpty) {
    buf.writeln('Options:');
    for (final opt in cmd.options) {
      final abbr = opt.abbr != null ? '-${opt.abbr}, ' : '    ';
      final name = '--${opt.name}';
      final valuePart = opt.valueName != null ? '=<${opt.valueName}>' : '';
      buf.writeln('  $abbr$name$valuePart');
      buf.writeln('      ${opt.description}');
      if (opt.defaultValue != null) {
        buf.writeln('      (default: ${opt.defaultValue})');
      }
    }
    buf.writeln();
  }

  // Examples
  if (cmd.examples.isNotEmpty) {
    buf.writeln('Examples:');
    for (final ex in cmd.examples) {
      buf.writeln('  $ex');
    }
    buf.writeln();
  }

  // Traversal info
  if (cmd.supportsProjectTraversal || cmd.supportsGitTraversal) {
    buf.writeln('Traversal:');
    if (cmd.supportsProjectTraversal) {
      buf.writeln('  Supports --project, --exclude-project filters');
    }
    if (cmd.supportsGitTraversal) {
      buf.writeln('  Supports --inner-first-git, --outer-first-git traversal');
    }
    buf.writeln();
  }

  return buf.toString();
}