infoReport function
The report printed by ball info <input.ball.json> (no trailing newline).
Implementation
String infoReport(Program program) {
final lines = <String>[];
lines.add('Program: ${program.name} v${program.version}');
lines.add('Entry: ${program.entryModule}.${program.entryFunction}');
lines.add('Modules: ${program.modules.length}');
lines.add('');
for (final module in program.modules) {
final isBase = _allBase(module.functions);
lines.add(' ${module.name}${isBase ? " (base)" : ""}');
if (module.typeDefs.isNotEmpty) {
lines.add(' typeDefs: ${module.typeDefs.length}');
}
if (module.typeAliases.isNotEmpty) {
lines.add(' aliases: ${module.typeAliases.length}');
}
if (module.enums.isNotEmpty) {
lines.add(' enums: ${module.enums.length}');
}
lines.add(' functions: ${module.functions.length}');
if (module.description.isNotEmpty) {
lines.add(' desc: ${module.description}');
}
}
return lines.join('\n');
}