Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1078)

Side by Side Diff: packages/package_config/lib/discovery.dart

Issue 3015713002: Roll to pickup pool changes
Patch Set: Created 3 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, 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 package_config.discovery; 5 library package_config.discovery;
6 6
7 import "dart:async"; 7 import "dart:async";
8 import "dart:io"; 8 import "dart:io";
9 import "dart:typed_data" show Uint8List; 9 import "dart:typed_data" show Uint8List;
10 10
(...skipping 15 matching lines...) Expand all
26 /// 26 ///
27 /// This function can be used to load an explicitly configured package 27 /// This function can be used to load an explicitly configured package
28 /// resolution file, for example one specified using a `--packages` 28 /// resolution file, for example one specified using a `--packages`
29 /// command-line parameter. 29 /// command-line parameter.
30 Future<Packages> loadPackagesFile(Uri packagesFile, 30 Future<Packages> loadPackagesFile(Uri packagesFile,
31 {Future<List<int>> loader(Uri uri)}) async { 31 {Future<List<int>> loader(Uri uri)}) async {
32 Packages parseBytes(List<int> bytes) { 32 Packages parseBytes(List<int> bytes) {
33 Map<String, Uri> packageMap = pkgfile.parse(bytes, packagesFile); 33 Map<String, Uri> packageMap = pkgfile.parse(bytes, packagesFile);
34 return new MapPackages(packageMap); 34 return new MapPackages(packageMap);
35 } 35 }
36
36 if (packagesFile.scheme == "file") { 37 if (packagesFile.scheme == "file") {
37 File file = new File.fromUri(packagesFile); 38 File file = new File.fromUri(packagesFile);
38 return parseBytes(await file.readAsBytes()); 39 return parseBytes(await file.readAsBytes());
39 } 40 }
40 if (loader == null) { 41 if (loader == null) {
41 return parseBytes(await _httpGet(packagesFile)); 42 return parseBytes(await _httpGet(packagesFile));
42 } 43 }
43 return parseBytes(await loader(packagesFile)); 44 return parseBytes(await loader(packagesFile));
44 } 45 }
45 46
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
118 if (!dir.existsSync()) { 119 if (!dir.existsSync()) {
119 throw new ArgumentError.value( 120 throw new ArgumentError.value(
120 workingDirectory, "workingDirectory", "Directory does not exist."); 121 workingDirectory, "workingDirectory", "Directory does not exist.");
121 } 122 }
122 File checkForConfigFile(Directory directory) { 123 File checkForConfigFile(Directory directory) {
123 assert(directory.isAbsolute); 124 assert(directory.isAbsolute);
124 var file = new File(path.join(directory.path, ".packages")); 125 var file = new File(path.join(directory.path, ".packages"));
125 if (file.existsSync()) return file; 126 if (file.existsSync()) return file;
126 return null; 127 return null;
127 } 128 }
129
128 // Check for $cwd/.packages 130 // Check for $cwd/.packages
129 var packagesCfgFile = checkForConfigFile(dir); 131 var packagesCfgFile = checkForConfigFile(dir);
130 if (packagesCfgFile != null) return packagesCfgFile; 132 if (packagesCfgFile != null) return packagesCfgFile;
131 // Check for $cwd/packages/ 133 // Check for $cwd/packages/
132 var packagesDir = new Directory(path.join(dir.path, "packages")); 134 var packagesDir = new Directory(path.join(dir.path, "packages"));
133 if (packagesDir.existsSync()) return packagesDir; 135 if (packagesDir.existsSync()) return packagesDir;
134 // Check for cwd(/..)+/.packages 136 // Check for cwd(/..)+/.packages
135 var parentDir = dir.parent; 137 var parentDir = dir.parent;
136 while (parentDir.path != dir.path) { 138 while (parentDir.path != dir.path) {
137 packagesCfgFile = checkForConfigFile(parentDir); 139 packagesCfgFile = checkForConfigFile(parentDir);
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
203 return new NonFilePackagesDirectoryPackages(packagesDirectoryUri); 205 return new NonFilePackagesDirectoryPackages(packagesDirectoryUri);
204 } 206 }
205 } 207 }
206 208
207 /// Fetches a file over http. 209 /// Fetches a file over http.
208 Future<List<int>> _httpGet(Uri uri) async { 210 Future<List<int>> _httpGet(Uri uri) async {
209 HttpClient client = new HttpClient(); 211 HttpClient client = new HttpClient();
210 HttpClientRequest request = await client.getUrl(uri); 212 HttpClientRequest request = await client.getUrl(uri);
211 HttpClientResponse response = await request.close(); 213 HttpClientResponse response = await request.close();
212 if (response.statusCode != HttpStatus.OK) { 214 if (response.statusCode != HttpStatus.OK) {
213 throw 'Failure getting $uri: ' 215 throw new HttpException('${response.statusCode} ${response.reasonPhrase}',
214 '${response.statusCode} ${response.reasonPhrase}'; 216 uri: uri);
215 } 217 }
216 List<List<int>> splitContent = await response.toList(); 218 List<List<int>> splitContent = await response.toList();
217 int totalLength = 0; 219 int totalLength = 0;
218 for (var list in splitContent) { 220 for (var list in splitContent) {
219 totalLength += list.length; 221 totalLength += list.length;
220 } 222 }
221 Uint8List result = new Uint8List(totalLength); 223 Uint8List result = new Uint8List(totalLength);
222 int offset = 0; 224 int offset = 0;
223 for (List<int> contentPart in splitContent) { 225 for (List<int> contentPart in splitContent) {
224 result.setRange(offset, offset + contentPart.length, contentPart); 226 result.setRange(offset, offset + contentPart.length, contentPart);
225 offset += contentPart.length; 227 offset += contentPart.length;
226 } 228 }
227 return result; 229 return result;
228 } 230 }
OLDNEW
« no previous file with comments | « packages/package_config/CHANGELOG.md ('k') | packages/package_config/lib/discovery_analysis.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698