| OLD | NEW |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 import 'barback/transformer_cache.dart'; | 5 import 'barback/transformer_cache.dart'; |
| 6 import 'entrypoint.dart'; | 6 import 'entrypoint.dart'; |
| 7 import 'lock_file.dart'; | 7 import 'lock_file.dart'; |
| 8 import 'package.dart'; | 8 import 'package.dart'; |
| 9 import 'solver/version_solver.dart'; | 9 import 'solver/version_solver.dart'; |
| 10 import 'source/cached.dart'; | 10 import 'source/cached.dart'; |
| (...skipping 30 matching lines...) Expand all Loading... |
| 41 /// This is generally faster than loading a package graph from scratch, since | 41 /// This is generally faster than loading a package graph from scratch, since |
| 42 /// the packages' pubspecs are already fully-parsed. | 42 /// the packages' pubspecs are already fully-parsed. |
| 43 factory PackageGraph.fromSolveResult(Entrypoint entrypoint, | 43 factory PackageGraph.fromSolveResult(Entrypoint entrypoint, |
| 44 SolveResult result) { | 44 SolveResult result) { |
| 45 var packages = new Map.fromIterable(result.packages, | 45 var packages = new Map.fromIterable(result.packages, |
| 46 key: (id) => id.name, | 46 key: (id) => id.name, |
| 47 value: (id) { | 47 value: (id) { |
| 48 if (id.name == entrypoint.root.name) return entrypoint.root; | 48 if (id.name == entrypoint.root.name) return entrypoint.root; |
| 49 | 49 |
| 50 return new Package(result.pubspecs[id.name], | 50 return new Package(result.pubspecs[id.name], |
| 51 entrypoint.cache.sources[id.source].getDirectory(id)); | 51 entrypoint.cache.source(id.source).getDirectory(id)); |
| 52 }); | 52 }); |
| 53 | 53 |
| 54 return new PackageGraph(entrypoint, result.lockFile, packages); | 54 return new PackageGraph(entrypoint, result.lockFile, packages); |
| 55 } | 55 } |
| 56 | 56 |
| 57 /// Loads the transformer cache for this graph. | 57 /// Loads the transformer cache for this graph. |
| 58 /// | 58 /// |
| 59 /// This may only be called if [entrypoint] represents a physical package. | 59 /// This may only be called if [entrypoint] represents a physical package. |
| 60 /// This may modify the cache. | 60 /// This may modify the cache. |
| 61 TransformerCache loadTransformerCache() { | 61 TransformerCache loadTransformerCache() { |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 118 /// Returns whether [package] is mutable. | 118 /// Returns whether [package] is mutable. |
| 119 /// | 119 /// |
| 120 /// A package is considered to be mutable if it or any of its dependencies | 120 /// A package is considered to be mutable if it or any of its dependencies |
| 121 /// don't come from a cached source, since the user can change its contents | 121 /// don't come from a cached source, since the user can change its contents |
| 122 /// without modifying the pub cache. Information generated from mutable | 122 /// without modifying the pub cache. Information generated from mutable |
| 123 /// packages is generally not safe to cache, since it may change frequently. | 123 /// packages is generally not safe to cache, since it may change frequently. |
| 124 bool isPackageMutable(String package) { | 124 bool isPackageMutable(String package) { |
| 125 var id = lockFile.packages[package]; | 125 var id = lockFile.packages[package]; |
| 126 if (id == null) return true; | 126 if (id == null) return true; |
| 127 | 127 |
| 128 var source = entrypoint.cache.sources[id.source]; | 128 if (entrypoint.cache.source(id.source) is! CachedSource) return true; |
| 129 if (source is! CachedSource) return true; | |
| 130 | 129 |
| 131 return transitiveDependencies(package).any((dep) { | 130 return transitiveDependencies(package).any((dep) { |
| 132 var depId = lockFile.packages[dep.name]; | 131 var depId = lockFile.packages[dep.name]; |
| 133 | 132 |
| 134 // The entrypoint package doesn't have a lockfile entry. It's always | 133 // The entrypoint package doesn't have a lockfile entry. It's always |
| 135 // mutable. | 134 // mutable. |
| 136 if (depId == null) return true; | 135 if (depId == null) return true; |
| 137 | 136 |
| 138 return entrypoint.cache.sources[depId.source] is! CachedSource; | 137 return entrypoint.cache.source(depId.source) is! CachedSource; |
| 139 }); | 138 }); |
| 140 } | 139 } |
| 141 | 140 |
| 142 /// Returns whether [package] is static. | 141 /// Returns whether [package] is static. |
| 143 /// | 142 /// |
| 144 /// A package is considered to be static if it's not transformed and it came | 143 /// A package is considered to be static if it's not transformed and it came |
| 145 /// from a cached source. Static packages don't need to be fully processed by | 144 /// from a cached source. Static packages don't need to be fully processed by |
| 146 /// barback. | 145 /// barback. |
| 147 /// | 146 /// |
| 148 /// Note that a static package isn't the same as an immutable package (see | 147 /// Note that a static package isn't the same as an immutable package (see |
| 149 /// [isPackageMutable]). | 148 /// [isPackageMutable]). |
| 150 bool isPackageStatic(String package) { | 149 bool isPackageStatic(String package) { |
| 151 var id = lockFile.packages[package]; | 150 var id = lockFile.packages[package]; |
| 152 if (id == null) return false; | 151 if (id == null) return false; |
| 153 | 152 if (entrypoint.cache.source(id.source) is! CachedSource) return false; |
| 154 var source = entrypoint.cache.sources[id.source]; | |
| 155 if (source is! CachedSource) return false; | |
| 156 | |
| 157 return packages[package].pubspec.transformers.isEmpty; | 153 return packages[package].pubspec.transformers.isEmpty; |
| 158 } | 154 } |
| 159 } | 155 } |
| OLD | NEW |