| // Copyright 2013 The Flutter Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| import 'dart:io'; |
| |
| import 'package:meta/meta.dart'; |
| |
| /// The result of running a command or operation. |
| /// |
| /// This loosely corresponds to a [ProcessResult], but is not necessarily the |
| /// result of running a process. |
| @immutable |
| class OperationResult { |
| const OperationResult._( |
| this.success, { |
| this.info = '', |
| this.error = '', |
| }); |
| |
| /// A successful operation result with a non-null but potentially empty info |
| /// message, and an empty error message. |
| factory OperationResult.success({ |
| String info = '', |
| }) { |
| assert(info != null); |
| return OperationResult._(true, info: info); |
| } |
| |
| /// A failing operation result with a non-null but potentially empty error, |
| /// and a non-null but potentially empty info. |
| factory OperationResult.error( |
| String error, { |
| String info = '', |
| }) { |
| assert(error != null); |
| assert(info != null); |
| return OperationResult._(false, info: info, error: error); |
| } |
| |
| /// Creates an [OperationResult] from a [ProcessResult]. |
| factory OperationResult.fromProcessResult( |
| ProcessResult result, { |
| int expectedExitCode = 0, |
| }) { |
| assert(expectedExitCode != null); |
| return OperationResult._( |
| result.exitCode == expectedExitCode, |
| info: result.stdout.toString(), |
| error: result.stderr.toString(), |
| ); |
| } |
| |
| /// Whether the result was successful or not. Not null. |
| final bool success; |
| |
| /// Information from the result, e.g. the stdout of a process. |
| final String info; |
| |
| /// Error information from the result, e.g. the stderr of a process. |
| final String error; |
| |
| @override |
| String toString() => |
| '$runtimeType{${success ? 'success' : 'failure'}, info: "$info", error: "$error"}'; |
| } |