in lib/src/batch/batch_compare_command.dart [48:99]
Future<void> run() async {
final packages = await _parsePackages(argResults!['packages'] as String);
final experimentConfig =
await _parseConfig(argResults!['experiment'] as String);
final controlConfig = await _parseConfig(argResults!['control'] as String);
final output = argResults!['output'] as String?;
await withTempDir((tempDir) async {
final experimentEnv = await _initToolEnv(experimentConfig, tempDir);
final controlEnv = await _initToolEnv(controlConfig, tempDir);
final experimentalOptions = await _parseOptions(experimentConfig);
final controlOptions = await _parseOptions(controlConfig);
var unchangedCount = 0;
final increased = <String, int>{};
final decreased = <String, int>{};
for (final package in packages) {
final expSummary = await PackageAnalyzer(experimentEnv)
.inspectPackage(package, options: experimentalOptions);
final controlSummary = await PackageAnalyzer(controlEnv)
.inspectPackage(package, options: controlOptions);
final diff = (expSummary.report?.grantedPoints ?? 0) -
(controlSummary.report?.grantedPoints ?? 0);
print('$package: $diff');
if (diff == 0) {
unchangedCount++;
} else if (diff > 0) {
increased[package] = diff;
} else {
decreased[package] = diff;
}
}
final result = BatchResult(
unchangedCount: unchangedCount,
increased: BatchChanged(count: increased.length, packages: increased),
decreased: BatchChanged(count: decreased.length, packages: decreased),
);
final formatted =
const JsonEncoder.withIndent(' ').convert(result.toJson());
if (output == null) {
print(formatted);
} else {
await File(output).writeAsString(formatted);
}
});
}