Index: sdk/lib/_internal/pub/lib/src/barback/load_transformers.dart |
diff --git a/sdk/lib/_internal/pub/lib/src/barback/load_transformers.dart b/sdk/lib/_internal/pub/lib/src/barback/load_transformers.dart |
index 2552b09aee921397d23862640ac0a701768a400f..38938be500f17aec5d12bd33a354718345ff6028 100644 |
--- a/sdk/lib/_internal/pub/lib/src/barback/load_transformers.dart |
+++ b/sdk/lib/_internal/pub/lib/src/barback/load_transformers.dart |
@@ -39,7 +39,8 @@ void main(_, SendPort replyTo) { |
_respond(wrappedMessage, (message) { |
var library = Uri.parse(message['library']); |
var configuration = JSON.decode(message['configuration']); |
- return initialize(library, configuration). |
+ var mode = new BarbackMode(message['mode']); |
+ return initialize(library, configuration, mode). |
map(_serializeTransformerOrGroup).toList(); |
}); |
}); |
@@ -48,9 +49,8 @@ void main(_, SendPort replyTo) { |
/// Loads all the transformers and groups defined in [uri]. |
/// |
/// Loads the library, finds any Transformer or TransformerGroup subclasses in |
-/// it, instantiates them (with [configuration] if it's non-null), and returns |
-/// them. |
-Iterable initialize(Uri uri, Map configuration) { |
+/// it, instantiates them with [configuration] and [mode], and returns them. |
+Iterable initialize(Uri uri, Map configuration, BarbackMode mode) { |
var mirrors = currentMirrorSystem(); |
var transformerClass = reflectClass(Transformer); |
var groupClass = reflectClass(TransformerGroup); |
@@ -77,10 +77,8 @@ Iterable initialize(Uri uri, Map configuration) { |
// to an empty map. |
if (configuration == null) configuration = {}; |
- // TODO(nweiz): if the constructor accepts named parameters, automatically |
- // destructure the configuration map. |
- return classMirror.newInstance(const Symbol('asPlugin'), [configuration]) |
- .reflectee; |
+ return classMirror.newInstance(const Symbol('asPlugin'), |
+ [new BarbackSettings(configuration, mode)]).reflectee; |
}).where((classMirror) => classMirror != null); |
} |
@@ -444,7 +442,8 @@ Stream callbackStream(Stream callback()) { |
/// [id]. |
/// |
/// [server] is used to serve any Dart files needed to load the transformers. |
-Future<Set> loadTransformers(BarbackServer server, TransformerId id) { |
+Future<Set> loadTransformers(BarbackServer server, BarbackMode mode, |
+ TransformerId id) { |
return id.getAssetId(server.barback).then((assetId) { |
var path = assetId.path.replaceFirst('lib/', ''); |
// TODO(nweiz): load from a "package:" URI when issue 12474 is fixed. |
@@ -460,6 +459,7 @@ Future<Set> loadTransformers(BarbackServer server, TransformerId id) { |
.then((sendPort) { |
return _call(sendPort, { |
'library': uri, |
+ 'mode': mode.name, |
// TODO(nweiz): support non-JSON-encodable configuration maps. |
'configuration': JSON.encode(id.configuration) |
}).then((transformers) { |
@@ -552,7 +552,7 @@ Map _serializeTransform(Transform transform) { |
if (message['type'] == 'addOutput') { |
transform.addOutput(_deserializeAsset(message['output'])); |
- return; |
+ return null; |
} |
assert(message['type'] == 'log'); |