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