@@ -19,6 +19,7 @@ import 'package:yaml/yaml.dart' show loadYaml;
19
19
import 'core.dart' ;
20
20
21
21
class DartNativeAssetsBuilder {
22
+ final Map <Object ?, Object ?>? pubspec;
22
23
final Uri packageConfigUri;
23
24
final String runPackageName;
24
25
final bool verbose;
@@ -50,21 +51,34 @@ class DartNativeAssetsBuilder {
50
51
51
52
late final Future <NativeAssetsBuildRunner > _nativeAssetsBuildRunner =
52
53
() async {
54
+ final Map <String , Map <String , Object ?>?> userDefines;
55
+ if (pubspec == null ) {
56
+ userDefines = {};
57
+ } else {
58
+ userDefines =
59
+ NativeAssetsBuildRunner .readHooksUserDefinesFromPubspec (pubspec! );
60
+ }
53
61
return NativeAssetsBuildRunner (
54
62
// This always runs in JIT mode.
55
63
dartExecutable: Uri .file (sdk.dart),
56
64
logger: _logger,
57
65
fileSystem: const LocalFileSystem (),
58
66
packageLayout: await _packageLayout,
67
+ userDefines: userDefines,
59
68
);
60
69
}();
61
70
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;
68
82
69
83
/// Compiles all native assets for host OS in JIT mode.
70
84
///
@@ -223,7 +237,7 @@ class DartNativeAssetsBuilder {
223
237
// TODO(https://github.com/dart-lang/package_config/issues/126): Use
224
238
// package config resolution from package:package_config.
225
239
if (packageConfig == null ) {
226
- final pubspecMaybe = await _findPubspec (uri);
240
+ final pubspecMaybe = await findPubspec (uri);
227
241
if (pubspecMaybe != null ) {
228
242
// Silently run `pub get`, this is what would happen in
229
243
// `getExecutableForCommand` later.
@@ -259,7 +273,7 @@ class DartNativeAssetsBuilder {
259
273
}
260
274
}
261
275
262
- static Future <Uri ?> _findPubspec (Uri uri) async {
276
+ static Future <Uri ?> findPubspec (Uri uri) async {
263
277
while (true ) {
264
278
final candidate = uri.resolve ('pubspec.yaml' );
265
279
if (await File .fromUri (candidate).exists ()) {
@@ -277,7 +291,7 @@ class DartNativeAssetsBuilder {
277
291
///
278
292
/// Returns `null` if package cannnot be determined.
279
293
static Future <String ?> findRootPackageName (Uri uri) async {
280
- final pubspecUri = await _findPubspec (uri);
294
+ final pubspecUri = await findPubspec (uri);
281
295
if (pubspecUri == null ) {
282
296
return null ;
283
297
}
0 commit comments