Index: lib/src/package_graph.dart |
diff --git a/lib/src/package_graph.dart b/lib/src/package_graph.dart |
index 02ba973bd1b4deeb6f51b06b6ce44b139c07b8bb..abc1dc75b9e9064696ba7c82f14556696554c271 100644 |
--- a/lib/src/package_graph.dart |
+++ b/lib/src/package_graph.dart |
@@ -72,6 +72,32 @@ class PackageGraph { |
return _transitiveDependencies[package]; |
} |
+ /// Returns whether [package], or any of its transitive dependencies, have |
+ /// transformers that run on any of their public assets. |
+ /// |
+ /// This is pessimistic; if any package can't be determined to be transformed, |
+ /// this returns `true`. |
+ bool isPackageTransformed(String packageName) { |
+ if (_isIndividualPackageTransformed(packages[packageName])) return true; |
+ |
+ return transitiveDependencies(packageName) |
+ .any(_isIndividualPackageTransformed); |
+ } |
+ |
+ /// Returns whether [package] itself has transformers that run on any of its |
+ /// public assets. |
+ bool _isIndividualPackageTransformed(Package package) { |
+ if (package == null) return true; |
Bob Nystrom
2015/06/09 00:15:33
Document when this case comes into play.
nweiz
2015/06/09 00:37:34
Done.
|
+ |
+ if (package.name == entrypoint.root.name) { |
+ return package.pubspec.transformers.isNotEmpty; |
+ } |
+ |
+ return package.pubspec.transformers.any((phase) { |
+ return phase.any((config) => config.canTransformPublicFiles); |
+ }); |
+ } |
+ |
/// Returns whether [package] is mutable. |
/// |
/// A package is considered to be mutable if it or any of its dependencies |