| Index: runtime/bin/process.dart
|
| diff --git a/runtime/bin/process.dart b/runtime/bin/process.dart
|
| index 351465847f6efada58150c04bd14f73ae7b73d22..ac96ef98a4a405ba8a4292fbba0e8b74010ab6fc 100644
|
| --- a/runtime/bin/process.dart
|
| +++ b/runtime/bin/process.dart
|
| @@ -3,47 +3,52 @@
|
| // BSD-style license that can be found in the LICENSE file.
|
|
|
| /**
|
| - * [Process] objects are used to start new processes and interact with
|
| - * them.
|
| + * [Process] is used to start new processes.
|
| */
|
| -interface Process default _Process {
|
| +class Process {
|
| /**
|
| - * Creates a new process object and starts a process running the
|
| - * [executable] with the specified [arguments]. When the process has
|
| - * been successfully started [onStart] is called. If the process
|
| - * fails to start [onError] is called.
|
| + * Starts a process running the [executable] with the specified
|
| + * [arguments]. Returns an [InteractiveProcess] object that can be
|
| + * used to interact with the process.
|
| *
|
| * An optional [ProcessOptions] object can be passed to specify
|
| * options other than the executable and the arguments.
|
| - *
|
| - * No data can be written to the process stdin and the process
|
| - * cannot be closed nor killed before [onStart] has been invoked.
|
| */
|
| - Process.start(String executable,
|
| - List<String> arguments,
|
| - [ProcessOptions options]);
|
| + static InteractiveProcess start(String executable,
|
| + List<String> arguments,
|
| + [ProcessOptions options]) {
|
| + return _Process.start(executable, arguments, options);
|
| + }
|
|
|
| /**
|
| - * Creates a new process object, starts a process and runs it
|
| - * non-interactively to completion. The process run is [executable]
|
| - * with the specified [arguments]. When the process has been
|
| - * successfully started [onStart] is called. If the process fails to
|
| - * start [onError] is called.
|
| + * Starts a process and runs it non-interactively to completion. The
|
| + * process run is [executable] with the specified [arguments].
|
| *
|
| - * Options other than the executable and the arguments are specified
|
| - * using a [ProcessOptions] object. If no options are required,
|
| - * [null] can be passed as the options.
|
| + * An optional [ProcessOptions] object can be passed to specify
|
| + * options other than the executable and the arguments.
|
| *
|
| - * No communication via [stdin], [stdout] or [stderr] can take place
|
| - * with a non-interactive process. Instead, the process is run to
|
| - * completion at which point the exit code and stdout and stderr are
|
| - * supplied to the [callback] parameter.
|
| - */
|
| - Process.run(String executable,
|
| - List<String> arguments,
|
| - ProcessOptions options,
|
| - void callback(int exitCode, String stdout, String stderr));
|
| + * Returns a [:Future<ProcessResult>:] that completes with the
|
| + * result of running the process, i.e., exit code, standard out and
|
| + * standard in.
|
| + */
|
| + static Future<ProcessResult> run(String executable,
|
| + List<String> arguments,
|
| + [ProcessOptions options]) {
|
| + return _Process.run(executable, arguments, options);
|
| + }
|
| +}
|
|
|
| +/**
|
| + * [InteractiveProcess] represents a process which users can
|
| + * communicate with using streams.
|
| + *
|
| + * When the process has been successfully started [onStart] is
|
| + * called. If the process fails to start [onError] is called.
|
| + *
|
| + * No data can be written to the process stdin and the process
|
| + * cannot be closed nor killed before [onStart] has been invoked.
|
| + */
|
| +interface InteractiveProcess {
|
| /**
|
| * Returns an input stream of the process stdout.
|
| *
|
| @@ -108,6 +113,28 @@ interface Process default _Process {
|
|
|
|
|
| /**
|
| + * [ProcessResult] represents the result of running a non-interactive
|
| + * process started with [:Process.run:].
|
| + */
|
| +interface ProcessResult {
|
| + /**
|
| + * Exit code for the process.
|
| + */
|
| + int get exitCode();
|
| +
|
| + /**
|
| + * Standard output from the process as a string.
|
| + */
|
| + String get stdout();
|
| +
|
| + /**
|
| + * Standard error from the process as a string.
|
| + */
|
| + String get stderr();
|
| +}
|
| +
|
| +
|
| +/**
|
| * [ProcessOptions] represents the options that can be supplied when
|
| * starting a process.
|
| */
|
| @@ -156,7 +183,7 @@ class ProcessOptions {
|
|
|
| class ProcessException implements Exception {
|
| const ProcessException([String this.message, int this.errorCode = 0]);
|
| - String toString() => "ProcessException: $message";
|
| + String toString() => "ProcessException: $message ($errorCode)";
|
|
|
| /**
|
| * Contains the system message for the process exception if any.
|
|
|