infoReport function

String infoReport(
  1. Program program
)

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');
}