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

Unified Diff: utils/pub/io.dart

Issue 10392023: Change dart:io to use Future for one-shot operations. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Adding stable test binaries Created 8 years, 7 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « utils/compiler/build_helper.dart ('k') | utils/tests/pub/pub_test.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: utils/pub/io.dart
diff --git a/utils/pub/io.dart b/utils/pub/io.dart
index 371174f51736bd00cfda7db0a941a2ec9310a226..7a6357080490b5d08a57f8b03bea855fa020c1ef 100644
--- a/utils/pub/io.dart
+++ b/utils/pub/io.dart
@@ -91,13 +91,7 @@ Future<bool> exists(path) {
* the result.
*/
Future<bool> fileExists(file) {
- final completer = new Completer<bool>();
-
- file = new File(_getPath(file));
- file.onError = (error) => completer.completeException(error);
- file.exists((exists) => completer.complete(exists));
-
- return completer.future;
+ return new File(_getPath(file)).exists();
}
/**
@@ -105,12 +99,7 @@ Future<bool> fileExists(file) {
* a [File].
*/
Future<String> readTextFile(file) {
- file = new File(_getPath(file));
- final completer = new Completer<String>();
- file.onError = (error) => completer.completeException(error);
- file.readAsText(Encoding.UTF_8, (text) => completer.complete(text));
-
- return completer.future;
+ return new File(_getPath(file)).readAsText(Encoding.UTF_8);
}
/**
@@ -119,17 +108,11 @@ Future<String> readTextFile(file) {
*/
Future<File> writeTextFile(file, String contents) {
file = new File(_getPath(file));
- final completer = new Completer<File>();
- file.onError = (error) => completer.completeException(error);
- file.open(FileMode.WRITE, (opened) {
- opened.onError = (error) => completer.completeException(error);
- opened.onNoPendingWrites = () {
- opened.close(() => completer.complete(file));
- };
- opened.writeString(contents);
+ return file.open(FileMode.WRITE).chain((opened) {
+ return opened.writeString(contents).chain((ignore) {
+ return opened.close().transform((ignore) => file);
+ });
});
-
- return completer.future;
}
/**
@@ -137,12 +120,8 @@ Future<File> writeTextFile(file, String contents) {
* directory is created.
*/
Future<Directory> createDir(dir) {
- final completer = new Completer<Directory>();
dir = _getDirectory(dir);
- dir.onError = (error) => completer.completeException(error);
- dir.create(() => completer.complete(dir));
-
- return completer.future;
+ return dir.create();
}
/**
@@ -179,12 +158,8 @@ Future<Directory> ensureDir(path) {
* is created.
*/
Future<Directory> createTempDir(dir) {
- final completer = new Completer<Directory>();
dir = _getDirectory(dir);
- dir.onError = (error) => completer.completeException(error);
- dir.createTemp(() => completer.complete(dir));
-
- return completer.future;
+ return dir.createTemp();
}
/**
@@ -192,12 +167,8 @@ Future<Directory> createTempDir(dir) {
* [Directory]. Returns a [Future] that completes when the deletion is done.
*/
Future<Directory> deleteDir(dir) {
- final completer = new Completer<Directory>();
dir = _getDirectory(dir);
- dir.onError = (error) => completer.completeException(error);
- dir.deleteRecursively(() => completer.complete(dir));
-
- return completer.future;
+ return dir.deleteRecursively();
}
/**
@@ -213,24 +184,23 @@ Future<List<String>> listDir(dir,
final contents = <String>[];
dir = _getDirectory(dir);
+ var lister = dir.list(recursive: recursive);
- dir.onDone = (done) {
+ lister.onDone = (done) {
// TODO(rnystrom): May need to sort here if it turns out onDir and onFile
// aren't guaranteed to be called in a certain order. So far, they seem to.
if (done) completer.complete(contents);
};
- dir.onError = (error) => completer.completeException(error);
- dir.onDir = (file) => contents.add(file);
- dir.onFile = (file) {
+ lister.onError = (error) => completer.completeException(error);
+ lister.onDir = (file) => contents.add(file);
+ lister.onFile = (file) {
if (!includeSpecialFiles) {
if (basename(file) == '.DS_Store') return;
}
contents.add(file);
};
- dir.list(recursive: recursive);
-
return completer.future;
}
@@ -240,13 +210,8 @@ Future<List<String>> listDir(dir,
* completes with the result.
*/
Future<bool> dirExists(dir) {
- final completer = new Completer<bool>();
-
dir = _getDirectory(dir);
- dir.onError = (error) => completer.completeException(error);
- dir.exists((exists) => completer.complete(exists));
-
- return completer.future;
+ return dir.exists();
}
/**
@@ -294,14 +259,14 @@ String getFullPath(entry) => new File(_getPath(entry)).fullPathSync();
* Returns a [Future] that will complete the results of the process after it
* has ended.
*/
-Future<ProcessResult> runProcess(String executable, List<String> args,
+Future<PubProcessResult> runProcess(String executable, List<String> args,
[String workingDir]) {
int exitCode;
final options = new ProcessOptions();
if (workingDir != null) options.workingDirectory = workingDir;
- final process = new Process.start(executable, args, options);
+ final process = Process.start(executable, args, options);
final outStream = new StringInputStream(process.stdout);
final processStdout = <String>[];
@@ -309,7 +274,7 @@ Future<ProcessResult> runProcess(String executable, List<String> args,
final errStream = new StringInputStream(process.stderr);
final processStderr = <String>[];
- final completer = new Completer<ProcessResult>();
+ final completer = new Completer<PubProcessResult>();
checkComplete() {
// Wait until the process is done and its output streams are closed.
@@ -317,7 +282,7 @@ Future<ProcessResult> runProcess(String executable, List<String> args,
if (!errStream.closed) return;
if (exitCode == null) return;
- completer.complete(new ProcessResult(
+ completer.complete(new PubProcessResult(
processStdout, processStderr, exitCode));
}
@@ -342,12 +307,12 @@ Future<ProcessResult> runProcess(String executable, List<String> args,
/**
* Contains the results of invoking a [Process] and waiting for it to complete.
*/
-class ProcessResult {
+class PubProcessResult {
final List<String> stdout;
final List<String> stderr;
final int exitCode;
- const ProcessResult(this.stdout, this.stderr, this.exitCode);
+ const PubProcessResult(this.stdout, this.stderr, this.exitCode);
}
/**
« no previous file with comments | « utils/compiler/build_helper.dart ('k') | utils/tests/pub/pub_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698