helpText method

String helpText()

Generate formatted help text for all CLI flags.

Implementation

String helpText() {
  final buffer = StringBuffer();
  buffer.writeln('Usage: neomage [options] [prompt]');
  buffer.writeln();
  buffer.writeln('Options:');

  final visibleFlags = CliFlags.all.where((f) => !f.isHidden).toList();

  // Calculate max flag width for alignment.
  int maxWidth = 0;
  for (final flag in visibleFlags) {
    int width = flag.long.length + 4; // --flag
    if (flag.short != null) width += 4; // -f,
    if (flag.takesValue) width += 8; // <value>
    if (width > maxWidth) maxWidth = width;
  }

  for (final flag in visibleFlags) {
    final shortPart = flag.short != null ? '-${flag.short}, ' : '    ';
    final longPart = '--${flag.long}';
    final valuePart = flag.takesValue ? ' <value>' : '';
    final flagStr = '$shortPart$longPart$valuePart';
    final padding = ' ' * (maxWidth - flagStr.length + 4);
    buffer.writeln('  $flagStr$padding${flag.description}');
  }

  buffer.writeln();
  buffer.writeln('Subcommands:');
  buffer.writeln('  mcp         Start as an MCP server');
  buffer.writeln('  listen      Start in listen mode');

  return buffer.toString();
}