renderCommandsIndex function

String renderCommandsIndex(
  1. List<DiscoveredCommand> commands
)

Renders the auto-generated index file content for commands.

Shape:

// AUTO-GENERATED ...
import 'package:fluttersdk_artisan/artisan.dart';

import 'clean_cache.dart';

List<ArtisanCommand> get commands => <ArtisanCommand>[
  CleanCacheCommand(),
];

Implementation

String renderCommandsIndex(List<DiscoveredCommand> commands) {
  final buf = StringBuffer()
    ..writeln('// AUTO-GENERATED — DO NOT EDIT.')
    ..writeln('// Regenerate via: artisan commands:refresh')
    ..writeln('// (Also auto-updated by: artisan make:command <Name>)')
    ..writeln()
    ..writeln("import 'package:fluttersdk_artisan/artisan.dart';");

  if (commands.isEmpty) {
    buf
      ..writeln()
      ..writeln(
          'List<ArtisanCommand> get commands => const <ArtisanCommand>[];')
      ..writeln();
    return buf.toString();
  }

  // Deduplicate file imports (same file may export multiple commands).
  final imports = <String>{for (final c in commands) c.fileName}.toList()
    ..sort();
  buf.writeln();
  for (final f in imports) {
    buf.writeln("import '$f';");
  }
  buf
    ..writeln()
    ..writeln('List<ArtisanCommand> get commands => <ArtisanCommand>[');
  for (final c in commands) {
    buf.writeln('  ${c.className}(),');
  }
  buf
    ..writeln('];')
    ..writeln();
  return buf.toString();
}