Skip to content

Commit 3e855ba

Browse files
committed
[native_assets_builder] Consume the new .dart_tool/package_graph.json
1 parent ae32a51 commit 3e855ba

File tree

1 file changed

+25
-13
lines changed

1 file changed

+25
-13
lines changed

pkgs/native_assets_builder/lib/src/build_runner/build_planner.dart

Lines changed: 25 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -37,14 +37,26 @@ class NativeAssetsBuildPlanner {
3737
required PackageLayout packageLayout,
3838
required FileSystem fileSystem,
3939
}) async {
40-
final workingDirectory = packageConfigUri.resolve('../');
41-
final result = await Process.run(dartExecutable.toFilePath(), [
42-
'pub',
43-
'deps',
44-
'--json',
45-
], workingDirectory: workingDirectory.toFilePath());
46-
final packageGraph = PackageGraph.fromPubDepsJsonString(
47-
result.stdout as String,
40+
final packageGraphJsonFile = fileSystem.file(
41+
packageConfigUri.resolve('package_graph.json'),
42+
);
43+
final String packageGraphJson;
44+
if (packageGraphJsonFile.existsSync()) {
45+
packageGraphJson = await packageGraphJsonFile.readAsString();
46+
} else {
47+
// TODO: Either bump SDK constraint to dev release (but we can't while
48+
// flutter_tools requires published stable packages). Or wait for Dart 3.8
49+
// to be released to remove this fallback.
50+
final workingDirectory = packageConfigUri.resolve('../');
51+
final result = await Process.run(
52+
dartExecutable.toFilePath(),
53+
['pub', 'deps', '--json'],
54+
workingDirectory: workingDirectory.toFilePath(),
55+
);
56+
packageGraphJson = result.stdout as String;
57+
}
58+
final packageGraph = PackageGraph.fromPackageGraphJsonString(
59+
packageGraphJson,
4860
);
4961
final packageGraphFromRunPackage = packageGraph.subGraph(
5062
packageLayout.runPackageName,
@@ -144,12 +156,12 @@ class PackageGraph {
144156

145157
PackageGraph(this.map);
146158

147-
/// Constructs a graph from the JSON produced by `dart pub deps --json`.
148-
factory PackageGraph.fromPubDepsJsonString(String json) =>
149-
PackageGraph.fromPubDepsJson(jsonDecode(json) as Map<dynamic, dynamic>);
159+
factory PackageGraph.fromPackageGraphJsonString(String json) =>
160+
PackageGraph.fromPackageGraphJson(
161+
jsonDecode(json) as Map<dynamic, dynamic>,
162+
);
150163

151-
/// Constructs a graph from the JSON produced by `dart pub deps --json`.
152-
factory PackageGraph.fromPubDepsJson(Map<dynamic, dynamic> map) {
164+
factory PackageGraph.fromPackageGraphJson(Map<dynamic, dynamic> map) {
153165
final result = <String, List<String>>{};
154166
final packages = map['packages'] as List<dynamic>;
155167
for (final package in packages) {

0 commit comments

Comments
 (0)