TeamCity.CSharpInteractive/ColorTheme.cs (50 lines of code) (raw):
namespace TeamCity.CSharpInteractive;
using System.Diagnostics.CodeAnalysis;
using HostApi;
// ReSharper disable once ClassNeverInstantiated.Global
[ExcludeFromCodeCoverage]
internal class ColorTheme : IColorTheme
{
public ConsoleColor GetConsoleColor(Color color)
{
if (System.Console.BackgroundColor != ConsoleColor.White)
{
return color switch
{
Color.Default => ConsoleColor.Gray,
Color.Header => ConsoleColor.White,
Color.Trace => ConsoleColor.DarkGray,
Color.Success => ConsoleColor.Green,
Color.Warning => ConsoleColor.Yellow,
Color.Error => ConsoleColor.Red,
Color.Details => ConsoleColor.DarkBlue,
Color.Highlighted => ConsoleColor.DarkCyan,
_ => ConsoleColor.Gray
};
}
return color switch
{
Color.Default => ConsoleColor.Black,
Color.Header => ConsoleColor.Black,
Color.Trace => ConsoleColor.DarkGray,
Color.Success => ConsoleColor.Green,
Color.Warning => ConsoleColor.Yellow,
Color.Error => ConsoleColor.Red,
Color.Details => ConsoleColor.DarkBlue,
Color.Highlighted => ConsoleColor.DarkCyan,
_ => ConsoleColor.Black
};
}
public string GetAnsiColor(Color color) =>
color switch
{
Color.Default => "39",
Color.Header => "39;1",
Color.Trace => "90",
Color.Success => "32;1",
Color.Warning => "33",
Color.Error => "31",
Color.Details => "34;1",
Color.Highlighted => "36",
_ => "39"
};
}