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