Chromium Code Reviews| Index: pkg/analyzer_cli/lib/src/ansi.dart |
| diff --git a/pkg/analyzer_cli/lib/src/ansi.dart b/pkg/analyzer_cli/lib/src/ansi.dart |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..f068cd50e2195af7331568646c9b169589b5a100 |
| --- /dev/null |
| +++ b/pkg/analyzer_cli/lib/src/ansi.dart |
| @@ -0,0 +1,35 @@ |
| +// Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file |
| +// for details. 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'; |
| + |
| +/// Public for testing. |
| +bool runningTests = false; |
| + |
| +bool terminalSupportsAnsi() { |
| + return !runningTests && |
| + !Platform.isWindows && |
|
karlklose
2017/03/24 09:08:08
Here is the detection code we use in fasta, which
devoncarew
2017/03/25 22:33:17
Thanks! Looks comprehensive. I know package:test a
|
| + stdioType(stdout) == StdioType.TERMINAL; |
| +} |
| + |
| +class AnsiLogger { |
|
Brian Wilkerson
2017/03/23 17:09:51
Seems like this would be useful across multiple to
devoncarew
2017/03/25 22:33:17
Perhaps? I do like how lightweight our impl is, an
|
| + final bool useAnsi; |
| + |
| + String get cyan => _code('\u001b[36m'); |
| + String get green => _code('\u001b[32m'); |
| + String get magenta => _code('\u001b[35m'); |
| + String get red => _code('\u001b[31m'); |
| + String get yellow => _code('\u001b[33m'); |
| + String get blue => _code('\u001b[34m'); |
| + String get gray => _code('\u001b[1;30m'); |
| + String get none => _code('\u001b[0m'); |
| + String get noColor => _code('\u001b[39m'); |
| + String get bold => _code('\u001b[1m'); |
| + |
| + AnsiLogger(this.useAnsi); |
| + |
| + String get bullet => (runningTests || !Platform.isWindows) ? '•' : '-'; |
| + |
| + String _code(String ansiCode) => useAnsi ? ansiCode : ''; |
| +} |