| | | 1 | | using System.IO; |
| | | 2 | | using System.Linq; |
| | | 3 | | |
| | | 4 | | namespace Mklinker { |
| | | 5 | | |
| | | 6 | | class ConsoleHelpWriter : StringWriter { |
| | | 7 | | |
| | 0 | 8 | | public override void Write (string value) { |
| | 0 | 9 | | string[] lines = value.Split (System.Console.Out.NewLine); |
| | | 10 | | |
| | 0 | 11 | | for (int i = 0; i < lines.Length - 1; i++) { |
| | 0 | 12 | | WriteLine (lines[i]); |
| | 0 | 13 | | } |
| | 0 | 14 | | } |
| | | 15 | | |
| | 0 | 16 | | public override void WriteLine (string value) { |
| | | 17 | | // Use prefixes to add color coding to certain lines |
| | 0 | 18 | | string[] yellowPrefixes = { "Mklinker", "Copyright" }; |
| | 0 | 19 | | string[] whitePrefixes = { "help", "--help", "version", "--version" }; |
| | 0 | 20 | | string[] redPrefixes = { "ERROR", "Verb", "Option", "A required", "No verb" }; |
| | | 21 | | |
| | 0 | 22 | | if (yellowPrefixes.Any (p => value.Trim ().StartsWith (p))) { |
| | 0 | 23 | | System.Console.ForegroundColor = System.ConsoleColor.Yellow; |
| | 0 | 24 | | } |
| | | 25 | | |
| | 0 | 26 | | if (whitePrefixes.Any (p => value.Trim ().StartsWith (p))) { |
| | 0 | 27 | | System.Console.ForegroundColor = System.ConsoleColor.White; |
| | 0 | 28 | | } |
| | | 29 | | |
| | 0 | 30 | | if (redPrefixes.Any (p => value.Trim ().StartsWith (p))) { |
| | 0 | 31 | | System.Console.ForegroundColor = System.ConsoleColor.Red; |
| | 0 | 32 | | } |
| | | 33 | | |
| | 0 | 34 | | System.Console.Out.WriteLine (value); |
| | 0 | 35 | | System.Console.ResetColor (); |
| | 0 | 36 | | } |
| | | 37 | | |
| | | 38 | | } |
| | | 39 | | |
| | | 40 | | } |