From ba50910764124666dfc8a87a3a61fa1e1978891c Mon Sep 17 00:00:00 2001 From: Ben Konyi Date: Tue, 20 Jul 2021 19:51:50 +0000 Subject: [PATCH] [ Presubmit ] Only update .dart_tool/package_config.json when package contents don't match Should reduce the frequency of trivial merge conflicts due to differing times of the "generated" property. Change-Id: I1f481d48be0aa21c923c63aedb7d9888d8618bcc Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/207503 Reviewed-by: Bob Nystrom Commit-Queue: Ben Konyi --- tools/generate_package_config.dart | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/tools/generate_package_config.dart b/tools/generate_package_config.dart index 7b9a07d9369..882c827b95b 100644 --- a/tools/generate_package_config.dart +++ b/tools/generate_package_config.dart @@ -92,22 +92,20 @@ void main(List args) { packages.sort((a, b) => a["name"].compareTo(b["name"])); var configFile = File(p.join(repoRoot, '.dart_tool', 'package_config.json')); + var json = + jsonDecode(configFile.readAsStringSync()) as Map; + var oldPackages = json['packages'] as List; // Validate the packages entry only, to avoid spurious failures from changes // in the dates embedded in the other entries. - if (checkOnly) { - var json = - jsonDecode(configFile.readAsStringSync()) as Map; - var oldPackages = json['packages'] as List; - if (jsonEncode(packages) == jsonEncode(oldPackages)) { - print("Package config up to date"); - exit(0); - } else { - print("Package config out of date"); - print("Run `gclient sync -D && dart tools/generate_package_config.dart` " - "to update."); - exit(1); - } + if (jsonEncode(packages) == jsonEncode(oldPackages)) { + print("Package config up to date"); + exit(0); + } else if (checkOnly) { + print("Package config out of date"); + print("Run `gclient sync -D && dart tools/generate_package_config.dart` " + "to update."); + exit(1); } var year = DateTime.now().year; @@ -130,8 +128,8 @@ void main(List args) { }; // TODO(rnystrom): Consider using package_config_v2 to generate this instead. - var json = JsonEncoder.withIndent(' ').convert(config); - configFile.writeAsStringSync('$json\n'); + var jsonString = JsonEncoder.withIndent(' ').convert(config); + configFile.writeAsStringSync('$jsonString\n'); print('Generated .dart_tool/package_config.dart containing ' '${packages.length} packages.'); }