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

Side by Side Diff: utils/pub/io.dart

Issue 12092080: Validate packages against their SDK constraints. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Clean up a bit. Created 7 years, 10 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 | Annotate | Revision Log
OLDNEW
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 /// Helper functionality to make working with IO easier. 5 /// Helper functionality to make working with IO easier.
6 library io; 6 library io;
7 7
8 import 'dart:async'; 8 import 'dart:async';
9 import 'dart:io'; 9 import 'dart:io';
10 import 'dart:isolate'; 10 import 'dart:isolate';
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
62 /// Asynchronously determines if [file], which can be a [String] file path or a 62 /// Asynchronously determines if [file], which can be a [String] file path or a
63 /// [File], exists on the file system. Returns a [Future] that completes with 63 /// [File], exists on the file system. Returns a [Future] that completes with
64 /// the result. 64 /// the result.
65 Future<bool> fileExists(file) { 65 Future<bool> fileExists(file) {
66 var path = _getPath(file); 66 var path = _getPath(file);
67 return log.ioAsync("Seeing if file $path exists.", 67 return log.ioAsync("Seeing if file $path exists.",
68 new File(path).exists(), 68 new File(path).exists(),
69 (exists) => "File $path ${exists ? 'exists' : 'does not exist'}."); 69 (exists) => "File $path ${exists ? 'exists' : 'does not exist'}.");
70 } 70 }
71 71
72 // TODO(rnystrom): Get rid of this and only use sync.
72 /// Reads the contents of the text file [file], which can either be a [String] 73 /// Reads the contents of the text file [file], which can either be a [String]
73 /// or a [File]. 74 /// or a [File].
74 Future<String> readTextFile(file) { 75 Future<String> readTextFile(file) {
75 var path = _getPath(file); 76 var path = _getPath(file);
76 return log.ioAsync("Reading text file $path.", 77 return log.ioAsync("Reading text file $path.",
77 new File(path).readAsString(Encoding.UTF_8), 78 new File(path).readAsString(Encoding.UTF_8),
78 (contents) { 79 (contents) {
79 // Sanity check: don't spew a huge file. 80 // Sanity check: don't spew a huge file.
80 if (contents.length < 1024 * 1024) { 81 if (contents.length < 1024 * 1024) {
81 return "Read $path. Contents:\n$contents"; 82 return "Read $path. Contents:\n$contents";
82 } else { 83 } else {
83 return "Read ${contents.length} characters from $path."; 84 return "Read ${contents.length} characters from $path.";
84 } 85 }
85 }); 86 });
86 } 87 }
87 88
89 /// Reads the contents of the text file [file], which can either be a [String]
90 /// or a [File].
91 String readTextFileSync(file) {
nweiz 2013/01/31 22:38:53 I'm not a big fan of this intermediate duplication
Bob Nystrom 2013/02/01 16:53:29 Yup. Once that patch lands, this will be gone.
92 var path = _getPath(file);
93 log.io("Reading text file $path.");
94 var contents = new File(path).readAsStringSync(Encoding.UTF_8);
95
96 // Sanity check: don't spew a huge file.
97 if (contents.length < 1024 * 1024) {
98 log.fine("Read $path. Contents:\n$contents");
99 } else {
100 log.fine("Read ${contents.length} characters from $path.");
101 }
102
103 return contents;
104 }
105
88 /// Creates [file] (which can either be a [String] or a [File]), and writes 106 /// Creates [file] (which can either be a [String] or a [File]), and writes
89 /// [contents] to it. Completes when the file is written and closed. 107 /// [contents] to it. Completes when the file is written and closed.
90 /// 108 ///
91 /// If [dontLogContents] is true, the contents of the file will never be logged. 109 /// If [dontLogContents] is true, the contents of the file will never be logged.
92 Future<File> writeTextFile(file, String contents, {dontLogContents: false}) { 110 Future<File> writeTextFile(file, String contents, {dontLogContents: false}) {
93 var path = _getPath(file); 111 var path = _getPath(file);
94 file = new File(path); 112 file = new File(path);
95 113
96 // Sanity check: don't spew a huge file. 114 // Sanity check: don't spew a huge file.
97 log.io("Writing ${contents.length} characters to text file $path."); 115 log.io("Writing ${contents.length} characters to text file $path.");
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after
282 return Future.wait(children).then((childContents) { 300 return Future.wait(children).then((childContents) {
283 contents.addAll(flatten(childContents)); 301 contents.addAll(flatten(childContents));
284 return contents; 302 return contents;
285 }); 303 });
286 }); 304 });
287 } 305 }
288 306
289 return doList(_getDirectory(dir), new Set<String>()); 307 return doList(_getDirectory(dir), new Set<String>());
290 } 308 }
291 309
310 // TODO(rnystrom): Migrate everything over to the sync one and get rid of this.
292 /// Asynchronously determines if [dir], which can be a [String] directory path 311 /// Asynchronously determines if [dir], which can be a [String] directory path
293 /// or a [Directory], exists on the file system. Returns a [Future] that 312 /// or a [Directory], exists on the file system. Returns a [Future] that
294 /// completes with the result. 313 /// completes with the result.
295 Future<bool> dirExists(dir) { 314 Future<bool> dirExists(dir) {
296 dir = _getDirectory(dir); 315 dir = _getDirectory(dir);
297 return log.ioAsync("Seeing if directory ${dir.path} exists.", 316 return log.ioAsync("Seeing if directory ${dir.path} exists.",
298 dir.exists(), 317 dir.exists(),
299 (exists) => "Directory ${dir.path} " 318 (exists) => "Directory ${dir.path} "
300 "${exists ? 'exists' : 'does not exist'}."); 319 "${exists ? 'exists' : 'does not exist'}.");
301 } 320 }
302 321
322 /// Determines if [dir], which can be a [String] directory path or a
323 /// [Directory], exists on the file system. Returns a [Future] that completes
324 /// with the result.
325 bool dirExistsSync(dir) => _getDirectory(dir).existsSync();
326
303 /// "Cleans" [dir]. If that directory already exists, it will be deleted. Then a 327 /// "Cleans" [dir]. If that directory already exists, it will be deleted. Then a
304 /// new empty directory will be created. Returns a [Future] that completes when 328 /// new empty directory will be created. Returns a [Future] that completes when
305 /// the new clean directory is created. 329 /// the new clean directory is created.
306 Future<Directory> cleanDir(dir) { 330 Future<Directory> cleanDir(dir) {
307 return dirExists(dir).then((exists) { 331 return dirExists(dir).then((exists) {
308 if (exists) { 332 if (exists) {
309 // Delete it first. 333 // Delete it first.
310 return deleteDir(dir).then((_) => createDir(dir)); 334 return deleteDir(dir).then((_) => createDir(dir));
311 } else { 335 } else {
312 // Just create it. 336 // Just create it.
(...skipping 653 matching lines...) Expand 10 before | Expand all | Expand 10 after
966 Directory _getDirectory(entry) { 990 Directory _getDirectory(entry) {
967 if (entry is Directory) return entry; 991 if (entry is Directory) return entry;
968 return new Directory(entry); 992 return new Directory(entry);
969 } 993 }
970 994
971 /// Gets a [Uri] for [uri], which can either already be one, or be a [String]. 995 /// Gets a [Uri] for [uri], which can either already be one, or be a [String].
972 Uri _getUri(uri) { 996 Uri _getUri(uri) {
973 if (uri is Uri) return uri; 997 if (uri is Uri) return uri;
974 return Uri.parse(uri); 998 return Uri.parse(uri);
975 } 999 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698