diff options
Diffstat (limited to 'src/tools/heat/ConsoleMessageListener.cs')
-rw-r--r-- | src/tools/heat/ConsoleMessageListener.cs | 90 |
1 files changed, 0 insertions, 90 deletions
diff --git a/src/tools/heat/ConsoleMessageListener.cs b/src/tools/heat/ConsoleMessageListener.cs deleted file mode 100644 index ebf1622b..00000000 --- a/src/tools/heat/ConsoleMessageListener.cs +++ /dev/null | |||
@@ -1,90 +0,0 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Tools.Core | ||
4 | { | ||
5 | using System; | ||
6 | using System.Collections.Generic; | ||
7 | using System.Globalization; | ||
8 | using System.Text; | ||
9 | using System.Threading; | ||
10 | using WixToolset.Data; | ||
11 | using WixToolset.Extensibility; | ||
12 | using WixToolset.Extensibility.Services; | ||
13 | |||
14 | public sealed class ConsoleMessageListener : IMessageListener | ||
15 | { | ||
16 | public ConsoleMessageListener(string prefix, string appName) | ||
17 | { | ||
18 | this.Prefix = prefix; | ||
19 | this.AppName = appName; | ||
20 | |||
21 | PrepareConsoleForLocalization(); | ||
22 | } | ||
23 | |||
24 | public string AppName { get; } | ||
25 | |||
26 | public string Prefix { get; } | ||
27 | |||
28 | public void Write(Message message) | ||
29 | { | ||
30 | var filename = message.SourceLineNumbers?.FileName ?? this.AppName; | ||
31 | var type = message.Level.ToString().ToLowerInvariant(); | ||
32 | var output = message.Level >= MessageLevel.Warning ? Console.Out : Console.Error; | ||
33 | |||
34 | if (message.SourceLineNumbers?.LineNumber.HasValue == true) | ||
35 | { | ||
36 | filename = String.Concat(filename, "(", message.SourceLineNumbers?.LineNumber.Value, ")"); | ||
37 | } | ||
38 | |||
39 | output.WriteLine("{0} : {1} {2}{3:0000}: {4}", filename, type, this.Prefix, message.Id, message.ToString()); | ||
40 | |||
41 | var fileNames = GetFileNames(message.SourceLineNumbers); | ||
42 | if (fileNames.Count > 1) | ||
43 | { | ||
44 | foreach (var fileName in fileNames) | ||
45 | { | ||
46 | output.WriteLine("Source trace: {0}", fileName); | ||
47 | } | ||
48 | } | ||
49 | } | ||
50 | |||
51 | public void Write(string message) => Console.Out.WriteLine(message); | ||
52 | |||
53 | public MessageLevel CalculateMessageLevel(IMessaging messaging, Message message, MessageLevel defaultMessageLevel) => defaultMessageLevel; | ||
54 | |||
55 | private static IList<string> GetFileNames(SourceLineNumber sourceLineNumbers) | ||
56 | { | ||
57 | var fileNames = new List<string>(); | ||
58 | |||
59 | for (var sln = sourceLineNumbers; null != sln; sln = sln.Parent) | ||
60 | { | ||
61 | if (String.IsNullOrEmpty(sln.FileName)) | ||
62 | { | ||
63 | continue; | ||
64 | } | ||
65 | else if (sln.LineNumber.HasValue) | ||
66 | { | ||
67 | fileNames.Add(String.Format(CultureInfo.CurrentUICulture, "{0}: line {1}", sln.FileName, sln.LineNumber)); | ||
68 | } | ||
69 | else | ||
70 | { | ||
71 | fileNames.Add(sln.FileName); | ||
72 | } | ||
73 | } | ||
74 | |||
75 | return fileNames; | ||
76 | } | ||
77 | |||
78 | private static void PrepareConsoleForLocalization() | ||
79 | { | ||
80 | Thread.CurrentThread.CurrentUICulture = CultureInfo.CurrentUICulture.GetConsoleFallbackUICulture(); | ||
81 | |||
82 | if (Console.OutputEncoding.CodePage != Encoding.UTF8.CodePage && | ||
83 | Console.OutputEncoding.CodePage != Thread.CurrentThread.CurrentUICulture.TextInfo.OEMCodePage && | ||
84 | Console.OutputEncoding.CodePage != Thread.CurrentThread.CurrentUICulture.TextInfo.ANSICodePage) | ||
85 | { | ||
86 | Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US"); | ||
87 | } | ||
88 | } | ||
89 | } | ||
90 | } | ||