using System; namespace AssetStudioCLI { // Represents set with 16 base colors using ANSI escape codes, which should be supported in most terminals // (well, except for windows editions before windows 10) public static class CLIAnsiColors { public static readonly string Black = "\u001b[30m", Red = "\u001b[31m", Green = "\u001b[32m", Yellow = "\u001b[33m", //remapped to ~BrightWhite in Windows PowerShell 6 Blue = "\u001b[34m", Magenta = "\u001b[35m", //remapped to ~Blue in Windows PowerShell 6 Cyan = "\u001b[36m", White = "\u001b[37m", BrightBlack = "\u001b[30;1m", BrightRed = "\u001b[31;1m", BrightGreen = "\u001b[32;1m", BrightYellow = "\u001b[33;1m", BrightBlue = "\u001b[34;1m", BrightMagenta = "\u001b[35;1m", BrightCyan = "\u001b[36;1m", BrightWhite = "\u001b[37;1m"; private static readonly string Reset = "\u001b[0m"; public static string Color(this string str, string ansiColor) { if (!CLIWinAnsiFix.isAnsiSupported) { return str; } return $"{ansiColor}{str}{Reset}"; } public static void ANSICodesTest() { Console.WriteLine("ANSI escape codes test"); Console.WriteLine($"Supported: {CLIWinAnsiFix.isAnsiSupported}"); Console.WriteLine("\u001b[30m A \u001b[31m B \u001b[32m C \u001b[33m D \u001b[0m"); Console.WriteLine("\u001b[34m E \u001b[35m F \u001b[36m G \u001b[37m H \u001b[0m"); Console.WriteLine("\u001b[30;1m A \u001b[31;1m B \u001b[32;1m C \u001b[33;1m D \u001b[0m"); Console.WriteLine("\u001b[34;1m E \u001b[35;1m F \u001b[36;1m G \u001b[37;1m H \u001b[0m"); } } }