Index: sdk/lib/_internal/pub/lib/src/barback/load_all_transformers.dart |
diff --git a/sdk/lib/_internal/pub/lib/src/barback/load_all_transformers.dart b/sdk/lib/_internal/pub/lib/src/barback/load_all_transformers.dart |
index 93c523cd42c59f95569f9f9046613a7aff7ccad3..e1ac463460e8689ae5f039280e9e2436915ac244 100644 |
--- a/sdk/lib/_internal/pub/lib/src/barback/load_all_transformers.dart |
+++ b/sdk/lib/_internal/pub/lib/src/barback/load_all_transformers.dart |
@@ -8,23 +8,22 @@ import 'dart:async'; |
import 'package:barback/barback.dart'; |
+import 'build_environment.dart'; |
import 'dart2js_transformer.dart'; |
import 'load_transformers.dart'; |
import 'rewrite_import_transformer.dart'; |
-import 'server.dart'; |
import '../barback.dart'; |
import '../package_graph.dart'; |
import '../utils.dart'; |
-/// Loads all transformers depended on by packages in [graph]. |
+/// Loads all transformers depended on by packages in [environment]. |
/// |
-/// This uses [server] to serve the Dart files from which transformers are |
-/// loaded, then adds the transformers to `server.barback`. |
+/// This uses [environment]'s server to serve the Dart files from which |
+/// transformers are loaded, then adds the transformers to `server.barback`. |
/// |
-/// Any [builtInTransformers] that are provided will automatically be added to |
-/// the end of the root package's cascade. |
-Future loadAllTransformers(BarbackServer server, PackageGraph graph, |
- BarbackMode mode, Iterable<Transformer> builtInTransformers) { |
+/// Any built-in transformers that are provided by the environment will |
+/// automatically be added to the end of the root package's cascade. |
+Future loadAllTransformers(BuildEnvironment environment) { |
// In order to determine in what order we should load transformers, we need to |
// know which transformers depend on which others. This is different than |
// normal package dependencies. Let's begin with some terminology: |
@@ -56,21 +55,21 @@ Future loadAllTransformers(BarbackServer server, PackageGraph graph, |
// Add a rewrite transformer for each package, so that we can resolve |
// "package:" imports while loading transformers. |
var rewrite = new RewriteImportTransformer(); |
- for (var package in graph.packages.values) { |
- server.barback.updateTransformers(package.name, [[rewrite]]); |
+ for (var package in environment.graph.packages.values) { |
+ environment.barback.updateTransformers(package.name, [[rewrite]]); |
} |
- var orderingDeps = _computeOrderingDeps(graph); |
- var packageTransformers = _computePackageTransformers(graph); |
+ var orderingDeps = _computeOrderingDeps(environment.graph); |
+ var packageTransformers = _computePackageTransformers(environment.graph); |
- var loader = new _TransformerLoader(server, mode, graph); |
+ var loader = new _TransformerLoader(environment); |
// The packages on which no packages have ordering dependencies -- that is, |
// the packages that don't need to be loaded before any other packages. These |
// packages will be loaded last, since all of their ordering dependencies need |
// to be loaded before they're loaded. However, they'll be traversed by |
// [loadPackage] first. |
- var rootPackages = graph.packages.keys.toSet() |
+ var rootPackages = environment.graph.packages.keys.toSet() |
.difference(unionAll(orderingDeps.values)); |
// The Futures for packages that have been loaded or are being actively loaded |
@@ -89,13 +88,13 @@ Future loadAllTransformers(BarbackServer server, PackageGraph graph, |
// phase uses a transformer defined in [package] itself, that transform |
// should be loaded after running all previous phases. |
var transformers = [[rewrite]]; |
- return Future.forEach(graph.packages[package].pubspec.transformers, |
- (phase) { |
+ return Future.forEach( |
+ environment.graph.packages[package].pubspec.transformers, (phase) { |
return Future.wait(phase.where((id) => id.package == package) |
.map(loader.load)).then((_) { |
transformers.add(unionAll(phase.map( |
(id) => loader.transformersFor(id)))); |
- server.barback.updateTransformers(package, transformers); |
+ environment.barback.updateTransformers(package, transformers); |
}); |
}).then((_) { |
// Now that we've applied all the transformers used by [package] via |
@@ -111,20 +110,15 @@ Future loadAllTransformers(BarbackServer server, PackageGraph graph, |
return Future.wait(rootPackages.map(loadPackage)).then((_) { |
/// Reset the transformers for each package to get rid of [rewrite], which |
/// is no longer needed. |
- for (var package in graph.packages.values) { |
+ for (var package in environment.graph.packages.values) { |
var phases = package.pubspec.transformers.map((phase) { |
return unionAll(phase.map((id) => loader.transformersFor(id))); |
}).toList(); |
- // The built-in transformers are for dart2js and forwarding assets around |
- // dart2js, and those only apply to the entrypoints in the root package. |
- if (package.name == graph.entrypoint.root.name && |
- builtInTransformers != null && |
- builtInTransformers.isNotEmpty) { |
- phases.add(builtInTransformers); |
- } |
+ var transformers = environment.getBuiltInTransformers(package); |
+ if (transformers != null) phases.add(transformers); |
- server.barback.updateTransformers(package.name, phases); |
+ environment.barback.updateTransformers(package.name, phases); |
} |
}); |
} |
@@ -211,11 +205,7 @@ Map<String, Set<TransformerId>> _computePackageTransformers( |
/// A class that loads transformers defined in specific files. |
class _TransformerLoader { |
- final PackageGraph _graph; |
- final BarbackServer _server; |
- |
- /// The mode that pub is running barback in. |
- final BarbackMode _mode; |
+ final BuildEnvironment _environment; |
/// The loaded transformers defined in the library identified by each |
/// transformer id. |
@@ -226,8 +216,8 @@ class _TransformerLoader { |
/// Used for error reporting. |
final _transformerUsers = new Map<Pair<String, String>, Set<String>>(); |
- _TransformerLoader(this._server, this._mode, this._graph) { |
- for (var package in _graph.packages.values) { |
+ _TransformerLoader(this._environment) { |
+ for (var package in _environment.graph.packages.values) { |
for (var id in unionAll(package.pubspec.transformers)) { |
_transformerUsers.putIfAbsent( |
new Pair(id.package, id.path), () => new Set<String>()) |
@@ -246,7 +236,7 @@ class _TransformerLoader { |
// TODO(nweiz): load multiple instances of the same transformer from the |
// same isolate rather than spinning up a separate isolate for each one. |
- return loadTransformers(_server, _mode, id).then((transformers) { |
+ return loadTransformers(_environment, id).then((transformers) { |
if (!transformers.isEmpty) { |
_transformers[id] = transformers; |
return; |
@@ -282,8 +272,8 @@ class _TransformerLoader { |
assert(id.package == '\$dart2js'); |
var transformer; |
try { |
- transformer = new Dart2JSTransformer.withSettings( |
- _graph, new BarbackSettings(id.configuration, _mode)); |
+ transformer = new Dart2JSTransformer.withSettings(_environment, |
+ new BarbackSettings(id.configuration, _environment.mode)); |
} on FormatException catch (error, stackTrace) { |
fail(error.message, error, stackTrace); |
} |