@@ -19,6 +19,7 @@ import 'package:yaml/yaml.dart' show loadYaml;
1919import 'core.dart' ;
2020
2121class DartNativeAssetsBuilder {
22+ final Map <Object ?, Object ?>? pubspec;
2223 final Uri packageConfigUri;
2324 final String runPackageName;
2425 final bool verbose;
@@ -50,21 +51,34 @@ class DartNativeAssetsBuilder {
5051
5152 late final Future <NativeAssetsBuildRunner > _nativeAssetsBuildRunner =
5253 () async {
54+ final Map <String , Map <String , Object ?>?> userDefines;
55+ if (pubspec == null ) {
56+ userDefines = {};
57+ } else {
58+ userDefines =
59+ NativeAssetsBuildRunner .readHooksUserDefinesFromPubspec (pubspec! );
60+ }
5361 return NativeAssetsBuildRunner (
5462 // This always runs in JIT mode.
5563 dartExecutable: Uri .file (sdk.dart),
5664 logger: _logger,
5765 fileSystem: const LocalFileSystem (),
5866 packageLayout: await _packageLayout,
67+ userDefines: userDefines,
5968 );
6069 }();
6170
62- DartNativeAssetsBuilder (
63- {required this .packageConfigUri,
64- required this .runPackageName,
65- required this .verbose,
66- Target ? target})
67- : target = target ?? Target .current;
71+ static List <String > validateHooksUserDefinesFromPubspec (
72+ Map <Object ?, Object ?> pubspec) =>
73+ NativeAssetsBuildRunner .validateHooksUserDefinesFromPubspec (pubspec);
74+
75+ DartNativeAssetsBuilder ({
76+ this .pubspec,
77+ required this .packageConfigUri,
78+ required this .runPackageName,
79+ required this .verbose,
80+ Target ? target,
81+ }) : target = target ?? Target .current;
6882
6983 /// Compiles all native assets for host OS in JIT mode.
7084 ///
@@ -223,7 +237,7 @@ class DartNativeAssetsBuilder {
223237 // TODO(https://github.com/dart-lang/package_config/issues/126): Use
224238 // package config resolution from package:package_config.
225239 if (packageConfig == null ) {
226- final pubspecMaybe = await _findPubspec (uri);
240+ final pubspecMaybe = await findPubspec (uri);
227241 if (pubspecMaybe != null ) {
228242 // Silently run `pub get`, this is what would happen in
229243 // `getExecutableForCommand` later.
@@ -259,7 +273,7 @@ class DartNativeAssetsBuilder {
259273 }
260274 }
261275
262- static Future <Uri ?> _findPubspec (Uri uri) async {
276+ static Future <Uri ?> findPubspec (Uri uri) async {
263277 while (true ) {
264278 final candidate = uri.resolve ('pubspec.yaml' );
265279 if (await File .fromUri (candidate).exists ()) {
@@ -277,7 +291,7 @@ class DartNativeAssetsBuilder {
277291 ///
278292 /// Returns `null` if package cannnot be determined.
279293 static Future <String ?> findRootPackageName (Uri uri) async {
280- final pubspecUri = await _findPubspec (uri);
294+ final pubspecUri = await findPubspec (uri);
281295 if (pubspecUri == null ) {
282296 return null ;
283297 }
0 commit comments