Index: sdk/lib/_internal/pub_generated/lib/src/barback/dependency_computer.dart |
diff --git a/sdk/lib/_internal/pub_generated/lib/src/barback/transformers_needed_by_transformers.dart b/sdk/lib/_internal/pub_generated/lib/src/barback/dependency_computer.dart |
similarity index 79% |
rename from sdk/lib/_internal/pub_generated/lib/src/barback/transformers_needed_by_transformers.dart |
rename to sdk/lib/_internal/pub_generated/lib/src/barback/dependency_computer.dart |
index 9bab9cc0a8dd5935d6ebe2d1e8b48b88855ee068..8564e5bec565a7a203ea34af9cd5e43849934fd0 100644 |
--- a/sdk/lib/_internal/pub_generated/lib/src/barback/transformers_needed_by_transformers.dart |
+++ b/sdk/lib/_internal/pub_generated/lib/src/barback/dependency_computer.dart |
@@ -1,4 +1,5 @@ |
-library pub.barback.transformers_needed_by_transformers; |
+library pub.barback.dependency_computer; |
+import 'package:barback/barback.dart'; |
import 'package:path/path.dart' as p; |
import '../dart.dart'; |
import '../io.dart'; |
@@ -8,40 +9,49 @@ import '../utils.dart'; |
import 'cycle_exception.dart'; |
import 'transformer_config.dart'; |
import 'transformer_id.dart'; |
-Map<TransformerId, Set<TransformerId>> |
- computeTransformersNeededByTransformers(PackageGraph graph) { |
- var result = {}; |
- var computer = new _DependencyComputer(graph); |
- for (var packageName in ordered(graph.packages.keys)) { |
- var package = graph.packages[packageName]; |
- for (var phase in package.pubspec.transformers) { |
- for (var config in phase) { |
- var id = config.id; |
- if (id.isBuiltInTransformer) continue; |
- if (id.package != graph.entrypoint.root.name && |
- !config.canTransformPublicFiles) { |
- continue; |
- } |
- result[id] = computer.transformersNeededByTransformer(id); |
- } |
- } |
- } |
- return result; |
-} |
-class _DependencyComputer { |
+class DependencyComputer { |
final PackageGraph _graph; |
final _loadingPackageComputers = new Set<String>(); |
final _packageComputers = new Map<String, _PackageDependencyComputer>(); |
final _transformersNeededByPackages = new Map<String, Set<TransformerId>>(); |
- _DependencyComputer(this._graph) { |
+ DependencyComputer(this._graph) { |
ordered(_graph.packages.keys).forEach(_loadPackageComputer); |
} |
- Set<TransformerId> transformersNeededByTransformer(TransformerId id) { |
+ Map<TransformerId, Set<TransformerId>> |
+ transformersNeededByTransformers([Iterable<TransformerId> transformers]) { |
+ var result = {}; |
+ if (transformers == null) { |
+ transformers = ordered(_graph.packages.keys).expand((packageName) { |
+ var package = _graph.packages[packageName]; |
+ return package.pubspec.transformers.expand((phase) { |
+ return phase.expand((config) { |
+ var id = config.id; |
+ if (id.isBuiltInTransformer) return []; |
+ if (id.package != _graph.entrypoint.root.name && |
+ !config.canTransformPublicFiles) { |
+ return []; |
+ } |
+ return [id]; |
+ }); |
+ }); |
+ }); |
+ } |
+ for (var id in transformers) { |
+ result[id] = _transformersNeededByTransformer(id); |
+ } |
+ return result; |
+ } |
+ Set<TransformerId> transformersNeededByLibrary(AssetId id) { |
+ var library = _graph.packages[id.package].path(p.fromUri(id.path)); |
+ _loadPackageComputer(id.package); |
+ return _packageComputers[id.package].transformersNeededByLibrary(library); |
+ } |
+ Set<TransformerId> _transformersNeededByTransformer(TransformerId id) { |
if (id.isBuiltInTransformer) return new Set(); |
_loadPackageComputer(id.package); |
- return _packageComputers[id.package].transformersNeededByTransformer(id); |
+ return _packageComputers[id.package]._transformersNeededByTransformer(id); |
} |
- Set<TransformerId> transformersNeededByPackageUri(Uri packageUri) { |
+ Set<TransformerId> _transformersNeededByPackageUri(Uri packageUri) { |
var components = p.split(p.fromUri(packageUri.path)); |
var packageName = components.first; |
var package = _graph.packages[packageName]; |
@@ -53,7 +63,7 @@ class _DependencyComputer { |
_loadPackageComputer(packageName); |
return _packageComputers[packageName].transformersNeededByLibrary(library); |
} |
- Set<TransformerId> transformersNeededByPackage(String rootPackage) { |
+ Set<TransformerId> _transformersNeededByPackage(String rootPackage) { |
if (_transformersNeededByPackages.containsKey(rootPackage)) { |
return _transformersNeededByPackages[rootPackage]; |
} |
@@ -100,7 +110,7 @@ class _DependencyComputer { |
} |
} |
class _PackageDependencyComputer { |
- final _DependencyComputer _dependencyComputer; |
+ final DependencyComputer _dependencyComputer; |
final Package _package; |
final _applicableTransformers = new Set<TransformerConfig>(); |
final _directives = new Map<Uri, Set<Uri>>(); |
@@ -108,7 +118,7 @@ class _PackageDependencyComputer { |
final _transformersNeededByTransformers = |
new Map<TransformerId, Set<TransformerId>>(); |
final _transitiveExternalDirectives = new Map<String, Set<Uri>>(); |
- _PackageDependencyComputer(_DependencyComputer dependencyComputer, |
+ _PackageDependencyComputer(DependencyComputer dependencyComputer, |
String packageName) |
: _dependencyComputer = dependencyComputer, |
_package = dependencyComputer._graph.packages[packageName] { |
@@ -117,7 +127,7 @@ class _PackageDependencyComputer { |
var id = config.id; |
try { |
if (id.package != _package.name) { |
- _dependencyComputer.transformersNeededByTransformer(id); |
+ _dependencyComputer._transformersNeededByTransformer(id); |
} else { |
_transformersNeededByTransformers[id] = |
transformersNeededByLibrary(_package.transformerPath(id)); |
@@ -130,7 +140,7 @@ class _PackageDependencyComputer { |
_applicableTransformers.addAll(phase); |
} |
} |
- Set<TransformerId> transformersNeededByTransformer(TransformerId id) { |
+ Set<TransformerId> _transformersNeededByTransformer(TransformerId id) { |
assert(id.package == _package.name); |
if (_transformersNeededByTransformers.containsKey(id)) { |
return _transformersNeededByTransformers[id]; |
@@ -153,7 +163,7 @@ class _PackageDependencyComputer { |
return _applicableTransformers.map( |
(config) => config.id).toSet().union(unionAll(dependencies.map((dep) { |
try { |
- return _dependencyComputer.transformersNeededByPackage(dep.name); |
+ return _dependencyComputer._transformersNeededByPackage(dep.name); |
} on CycleException catch (error) { |
throw error.prependStep("${_package.name} depends on ${dep.name}"); |
} |
@@ -161,7 +171,7 @@ class _PackageDependencyComputer { |
} else { |
return unionAll(externalDirectives.map((uri) { |
try { |
- return _dependencyComputer.transformersNeededByPackageUri(uri); |
+ return _dependencyComputer._transformersNeededByPackageUri(uri); |
} on CycleException catch (error) { |
var packageName = p.url.split(uri.path).first; |
throw error.prependStep("${_package.name} depends on $packageName"); |