Force colors when --color is given (#2481)
diff --git a/lib/src/command/outdated.dart b/lib/src/command/outdated.dart
index 21eebaf..0d5f289 100644
--- a/lib/src/command/outdated.dart
+++ b/lib/src/command/outdated.dart
@@ -200,8 +200,10 @@
if (argResults['json']) {
await _outputJson(rows);
} else {
- final useColors = argResults['color'] ||
- (!argResults.wasParsed('color') && canUseSpecialChars);
+ if (argResults.wasParsed('color') && argResults['color']) {
+ forceColors = true;
+ }
+ final useColors = argResults['color'] || canUseSpecialChars;
final marker = {
'outdated': oudatedMarker,
'none': noneMarker,
diff --git a/lib/src/utils.dart b/lib/src/utils.dart
index 2ed5705..5f48068 100644
--- a/lib/src/utils.dart
+++ b/lib/src/utils.dart
@@ -400,16 +400,20 @@
String _urlDecode(String encoded) =>
Uri.decodeComponent(encoded.replaceAll('+', ' '));
+/// Set to `true` if ANSI colors should be output regardless of terminalD
+bool forceColors = false;
+
/// Whether "special" strings such as Unicode characters or color escapes are
/// safe to use.
///
/// On Windows or when not printing to a terminal, only printable ASCII
/// characters should be used.
bool get canUseSpecialChars =>
- !runningFromTest &&
- !runningAsTest &&
- stdioType(stdout) == StdioType.terminal &&
- stdout.supportsAnsiEscapes;
+ forceColors ||
+ (!runningFromTest &&
+ !runningAsTest &&
+ stdioType(stdout) == StdioType.terminal &&
+ stdout.supportsAnsiEscapes);
/// Gets a "special" string (ANSI escape or Unicode).
///