OLD | NEW |
1 library pub.barback.transformer_cache; | 1 library pub.barback.transformer_cache; |
2 import 'package:path/path.dart' as p; | 2 import 'package:path/path.dart' as p; |
3 import '../io.dart'; | 3 import '../io.dart'; |
4 import '../log.dart' as log; | 4 import '../log.dart' as log; |
5 import '../package_graph.dart'; | 5 import '../package_graph.dart'; |
6 import '../sdk.dart' as sdk; | 6 import '../sdk.dart' as sdk; |
7 import '../utils.dart'; | 7 import '../utils.dart'; |
8 import 'transformer_id.dart'; | 8 import 'transformer_id.dart'; |
9 class TransformerCache { | 9 class TransformerCache { |
10 final PackageGraph _graph; | 10 final PackageGraph _graph; |
11 Set<TransformerId> _oldTransformers; | 11 Set<TransformerId> _oldTransformers; |
12 Set<TransformerId> _newTransformers; | 12 Set<TransformerId> _newTransformers; |
13 String _dir; | 13 String _dir; |
14 String get _manifestPath => p.join(_dir, "manifest.txt"); | 14 String get _manifestPath => p.join(_dir, "manifest.txt"); |
15 TransformerCache.load(PackageGraph graph) | 15 TransformerCache.load(PackageGraph graph) |
16 : _graph = graph, | 16 : _graph = graph, |
17 _dir = graph.entrypoint.root.path(".pub/transformers") { | 17 _dir = graph.entrypoint.root.path(".pub/transformers") { |
18 _oldTransformers = _parseManifest(); | 18 _oldTransformers = _parseManifest(); |
19 } | 19 } |
20 void clearIfOutdated(Set<String> changedPackages) { | 20 void clearIfOutdated(Set<String> changedPackages) { |
21 var snapshotDependencies = unionAll(_oldTransformers.map((id) { | 21 var snapshotDependencies = unionAll(_oldTransformers.map((id) { |
| 22 if (!_graph.packages.containsKey(id.package)) return new Set(); |
22 return _graph.transitiveDependencies( | 23 return _graph.transitiveDependencies( |
23 id.package).map((package) => package.name).toSet(); | 24 id.package).map((package) => package.name).toSet(); |
24 })); | 25 })); |
25 if (!overlaps(changedPackages, snapshotDependencies)) return; | 26 if (!overlaps(changedPackages, snapshotDependencies)) return; |
26 deleteEntry(_dir); | 27 deleteEntry(_dir); |
27 _oldTransformers = new Set(); | 28 _oldTransformers = new Set(); |
28 } | 29 } |
29 String snapshotPath(Set<TransformerId> transformers) { | 30 String snapshotPath(Set<TransformerId> transformers) { |
30 var path = p.join(_dir, "transformers.snapshot"); | 31 var path = p.join(_dir, "transformers.snapshot"); |
31 if (_newTransformers != null) return path; | 32 if (_newTransformers != null) return path; |
(...skipping 27 matching lines...) Expand all Loading... |
59 if (!fileExists(_manifestPath)) return new Set(); | 60 if (!fileExists(_manifestPath)) return new Set(); |
60 var manifest = readTextFile(_manifestPath).split("\n"); | 61 var manifest = readTextFile(_manifestPath).split("\n"); |
61 if (manifest.removeAt(0) != sdk.version.toString()) { | 62 if (manifest.removeAt(0) != sdk.version.toString()) { |
62 deleteEntry(_dir); | 63 deleteEntry(_dir); |
63 return new Set(); | 64 return new Set(); |
64 } | 65 } |
65 return manifest.single.split( | 66 return manifest.single.split( |
66 ",").map((id) => new TransformerId.parse(id, null)).toSet(); | 67 ",").map((id) => new TransformerId.parse(id, null)).toSet(); |
67 } | 68 } |
68 } | 69 } |
OLD | NEW |