Chromium Code Reviews| 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 |