| | 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 | | } |