OLD | NEW |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, 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 library system_cache; | 5 library system_cache; |
6 | 6 |
7 import 'dart:io'; | 7 import 'dart:io'; |
8 import 'dart:async'; | 8 import 'dart:async'; |
9 | 9 |
| 10 import '../../pkg/path/lib/path.dart' as path; |
| 11 |
10 import 'git_source.dart'; | 12 import 'git_source.dart'; |
11 import 'hosted_source.dart'; | 13 import 'hosted_source.dart'; |
12 import 'io.dart'; | 14 import 'io.dart'; |
13 import 'io.dart' as io show createTempDir; | 15 import 'io.dart' as io show createTempDir; |
14 import 'log.dart' as log; | 16 import 'log.dart' as log; |
15 import 'package.dart'; | 17 import 'package.dart'; |
16 import 'path_source.dart'; | 18 import 'path_source.dart'; |
17 import 'pubspec.dart'; | 19 import 'pubspec.dart'; |
18 import 'sdk_source.dart'; | 20 import 'sdk_source.dart'; |
19 import 'source.dart'; | 21 import 'source.dart'; |
20 import 'source_registry.dart'; | 22 import 'source_registry.dart'; |
21 import 'utils.dart'; | 23 import 'utils.dart'; |
22 import 'version.dart'; | 24 import 'version.dart'; |
23 | 25 |
24 /// The system-wide cache of installed packages. | 26 /// The system-wide cache of installed packages. |
25 /// | 27 /// |
26 /// This cache contains all packages that are downloaded from the internet. | 28 /// This cache contains all packages that are downloaded from the internet. |
27 /// Packages that are available locally (e.g. from the SDK) don't use this | 29 /// Packages that are available locally (e.g. from the SDK) don't use this |
28 /// cache. | 30 /// cache. |
29 class SystemCache { | 31 class SystemCache { |
30 /// The root directory where this package cache is located. | 32 /// The root directory where this package cache is located. |
31 final String rootDir; | 33 final String rootDir; |
32 | 34 |
33 String get tempDir => join(rootDir, '_temp'); | 35 String get tempDir => path.join(rootDir, '_temp'); |
34 | 36 |
35 /// Packages which are currently being asynchronously installed to the cache. | 37 /// Packages which are currently being asynchronously installed to the cache. |
36 final Map<PackageId, Future<Package>> _pendingInstalls; | 38 final Map<PackageId, Future<Package>> _pendingInstalls; |
37 | 39 |
38 /// The sources from which to install packages. | 40 /// The sources from which to install packages. |
39 final SourceRegistry sources; | 41 final SourceRegistry sources; |
40 | 42 |
41 /// Creates a new package cache which is backed by the given directory on the | 43 /// Creates a new package cache which is backed by the given directory on the |
42 /// user's file system. | 44 /// user's file system. |
43 SystemCache(this.rootDir) | 45 SystemCache(this.rootDir) |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
98 return future; | 100 return future; |
99 } | 101 } |
100 | 102 |
101 /// Create a new temporary directory within the system cache. The system | 103 /// Create a new temporary directory within the system cache. The system |
102 /// cache maintains its own temporary directory that it uses to stage | 104 /// cache maintains its own temporary directory that it uses to stage |
103 /// packages into while installing. It uses this instead of the OS's system | 105 /// packages into while installing. It uses this instead of the OS's system |
104 /// temp directory to ensure that it's on the same volume as the pub system | 106 /// temp directory to ensure that it's on the same volume as the pub system |
105 /// cache so that it can move the directory from it. | 107 /// cache so that it can move the directory from it. |
106 String createTempDir() { | 108 String createTempDir() { |
107 var temp = ensureDir(tempDir); | 109 var temp = ensureDir(tempDir); |
108 return io.createTempDir(join(temp, 'dir')); | 110 return io.createTempDir(path.join(temp, 'dir')); |
109 } | 111 } |
110 | 112 |
111 /// Delete's the system cache's internal temp directory. | 113 /// Delete's the system cache's internal temp directory. |
112 Future deleteTempDir() { | 114 Future deleteTempDir() { |
113 log.fine('Clean up system cache temp directory $tempDir.'); | 115 log.fine('Clean up system cache temp directory $tempDir.'); |
114 return defer(() { | 116 return defer(() { |
115 if (!dirExists(tempDir)) return; | 117 if (!dirExists(tempDir)) return; |
116 return deleteDir(tempDir); | 118 return deleteDir(tempDir); |
117 }); | 119 }); |
118 } | 120 } |
119 } | 121 } |
OLD | NEW |