@@ -7,6 +7,7 @@ import 'dart:io';
77
88import  'package:logging/logging.dart' ;
99import  'package:native_assets_cli/native_assets_cli.dart' ;
10+ import  'package:package_config/package_config.dart' ;
1011
1112import  '../package_layout/package_layout.dart' ;
1213import  '../utils/run_process.dart' ;
@@ -47,27 +48,38 @@ class NativeAssetsBuildRunner {
4748    packageLayout ?? =  await  PackageLayout .fromRootPackageRoot (workingDirectory);
4849    final  packagesWithNativeAssets = 
4950        await  packageLayout.packagesWithNativeAssets;
50-     final  planner =  await  NativeAssetsBuildPlanner .fromRootPackageRoot (
51-       rootPackageRoot:  packageLayout.rootPackageRoot,
52-       packagesWithNativeAssets:  packagesWithNativeAssets,
53-       dartExecutable:  Uri .file (Platform .resolvedExecutable),
54-       logger:  logger,
55-     );
56-     final  (plan, planSuccess) =  planner.plan ();
57-     if  (! planSuccess) {
58-       return  _BuildResultImpl (
59-         assets:  [],
60-         dependencies:  [],
61-         success:  false ,
51+     final  List <Package > buildPlan;
52+     final  PackageGraph  packageGraph;
53+     if  (packagesWithNativeAssets.length <=  1 ) {
54+       buildPlan =  packagesWithNativeAssets;
55+       packageGraph =  PackageGraph ({
56+         for  (final  p in  packagesWithNativeAssets) p.name:  [],
57+       });
58+     } else  {
59+       final  planner =  await  NativeAssetsBuildPlanner .fromRootPackageRoot (
60+         rootPackageRoot:  packageLayout.rootPackageRoot,
61+         packagesWithNativeAssets:  packagesWithNativeAssets,
62+         dartExecutable:  Uri .file (Platform .resolvedExecutable),
63+         logger:  logger,
6264      );
65+       final  (plan, planSuccess) =  planner.plan ();
66+       if  (! planSuccess) {
67+         return  _BuildResultImpl (
68+           assets:  [],
69+           dependencies:  [],
70+           success:  false ,
71+         );
72+       }
73+       buildPlan =  plan;
74+       packageGraph =  planner.packageGraph;
6375    }
6476    final  assets =  < Asset > [];
6577    final  dependencies =  < Uri > [];
6678    final  metadata =  < String , Metadata > {};
6779    var  success =  true ;
68-     for  (final  package in  plan ) {
80+     for  (final  package in  buildPlan ) {
6981      final  dependencyMetadata =  _metadataForPackage (
70-         packageGraph:  planner. packageGraph,
82+         packageGraph:  packageGraph,
7183        packageName:  package.name,
7284        targetMetadata:  metadata,
7385      );
@@ -123,22 +135,28 @@ class NativeAssetsBuildRunner {
123135    packageLayout ?? =  await  PackageLayout .fromRootPackageRoot (workingDirectory);
124136    final  packagesWithNativeAssets = 
125137        await  packageLayout.packagesWithNativeAssets;
126-     final  planner =  await  NativeAssetsBuildPlanner .fromRootPackageRoot (
127-       rootPackageRoot:  packageLayout.rootPackageRoot,
128-       packagesWithNativeAssets:  packagesWithNativeAssets,
129-       dartExecutable:  Uri .file (Platform .resolvedExecutable),
130-       logger:  logger,
131-     );
132-     final  (plan, planSuccess) =  planner.plan ();
133-     if  (! planSuccess) {
134-       return  _DryRunResultImpl (
135-         assets:  [],
136-         success:  false ,
138+     final  List <Package > buildPlan;
139+     if  (packagesWithNativeAssets.length <=  1 ) {
140+       buildPlan =  packagesWithNativeAssets;
141+     } else  {
142+       final  planner =  await  NativeAssetsBuildPlanner .fromRootPackageRoot (
143+         rootPackageRoot:  packageLayout.rootPackageRoot,
144+         packagesWithNativeAssets:  packagesWithNativeAssets,
145+         dartExecutable:  Uri .file (Platform .resolvedExecutable),
146+         logger:  logger,
137147      );
148+       final  (plan, planSuccess) =  planner.plan ();
149+       if  (! planSuccess) {
150+         return  _DryRunResultImpl (
151+           assets:  [],
152+           success:  false ,
153+         );
154+       }
155+       buildPlan =  plan;
138156    }
139157    final  assets =  < Asset > [];
140158    var  success =  true ;
141-     for  (final  package in  plan ) {
159+     for  (final  package in  buildPlan ) {
142160      final  config =  await  _cliConfigDryRun (
143161        packageName:  package.name,
144162        packageRoot:  packageLayout.packageRoot (package.name),
0 commit comments