// Copyright 2014 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' as io; import 'package:meta/meta.dart'; abstract class Stdio { /// Error/warning messages printed to STDERR. void printError(String message); /// Ordinary STDOUT messages. void printStatus(String message); /// Debug messages that are only printed in verbose mode. void printTrace(String message); /// Write string to STDOUT without trailing newline. void write(String message); /// Read a line of text from STDIN. String readLineSync(); } /// A logger that will print out trace messages. class VerboseStdio extends Stdio { VerboseStdio({ @required this.stdout, @required this.stderr, @required this.stdin, }) : assert(stdout != null), assert(stderr != null), assert(stdin != null); factory VerboseStdio.local() => VerboseStdio( stdout: io.stdout, stderr: io.stderr, stdin: io.stdin, ); final io.Stdout stdout; final io.Stdout stderr; final io.Stdin stdin; @override void printError(String message) { stderr.writeln(message); } @override void printStatus(String message) { stdout.writeln(message); } @override void printTrace(String message) { stdout.writeln(message); } @override void write(String message) { stdout.write(message); } @override String readLineSync() { return stdin.readLineSync(); } }