Skip to content

Commit 3586161

Browse files
authored
GH4662 Fix colorization of console log output (#4664)
(GH-4662) Fix colorization of console log output * background color should be added for single argument too * fixes #4662
2 parents cc71d61 + 400fef9 commit 3586161

File tree

2 files changed

+13
-25
lines changed

2 files changed

+13
-25
lines changed

src/Cake.Core.Tests/Unit/Diagnostics/CakeBuildLogTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ public void Should_Not_Colorize_A_Log_Message_Containg_A_Single_Token()
9898

9999
// Then
100100
Assert.Single(console.Messages);
101-
Assert.Equal("Hello World", console.Messages[0]);
101+
Assert.Equal("\u001b[37;1mHello World\u001b[0m", console.Messages[0]);
102102
}
103103

104104
[Theory]

src/Cake.Core/Diagnostics/Console/AnsiConsoleRenderer.cs

Lines changed: 12 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -68,37 +68,25 @@ public AnsiConsoleRenderer(IConsole console)
6868
public void Render(LogLevel level, string format, params object[] args)
6969
{
7070
var palette = _palette[level];
71-
var tokens = FormatParser.Parse(format);
72-
73-
var colorize = !"{0}".Equals(format, StringComparison.Ordinal);
71+
var (tokens, tokenArgs) = "{0}".Equals(format, StringComparison.Ordinal)
72+
? ([
73+
new LiteralToken(string.Format(format, args))
74+
],
75+
[])
76+
: (FormatParser.Parse(format), args);
7477

7578
foreach (var token in tokens)
7679
{
77-
if (colorize)
78-
{
79-
var colorEscapeCode = GetColorEscapeCode(token, palette);
80-
var content = token.Render(args);
80+
var colorEscapeCode = GetColorEscapeCode(token, palette);
81+
var content = token.Render(tokenArgs);
8182

82-
if (level > LogLevel.Error)
83-
{
84-
_console.Write("{0}", $"{colorEscapeCode}{content}{ResetEscapeCode}");
85-
}
86-
else
87-
{
88-
_console.WriteError("{0}", $"{colorEscapeCode}{content}{ResetEscapeCode}");
89-
}
83+
if (level > LogLevel.Error)
84+
{
85+
_console.Write("{0}", $"{colorEscapeCode}{content}{ResetEscapeCode}");
9086
}
9187
else
9288
{
93-
// Render without colorization.
94-
if (level > LogLevel.Error)
95-
{
96-
_console.Write("{0}", token.Render(args));
97-
}
98-
else
99-
{
100-
_console.WriteError("{0}", token.Render(args));
101-
}
89+
_console.WriteError("{0}", $"{colorEscapeCode}{content}{ResetEscapeCode}");
10290
}
10391
}
10492

0 commit comments

Comments
 (0)