diff options
author | Rob Mensching <rob@firegiant.com> | 2017-12-19 12:25:40 -0800 |
---|---|---|
committer | Rob Mensching <rob@firegiant.com> | 2017-12-19 12:25:40 -0800 |
commit | 155a6e96346e0cb3d9ab6f5372fa29b46ebaee89 (patch) | |
tree | 59d1f151bfde8068b6014b05b5c8cfea3402c974 /src/WixToolset.BuildTasks/DoIt.cs | |
parent | 6f1665ed759b31bd095f186f9239232c653597cd (diff) | |
download | wix-155a6e96346e0cb3d9ab6f5372fa29b46ebaee89.tar.gz wix-155a6e96346e0cb3d9ab6f5372fa29b46ebaee89.tar.bz2 wix-155a6e96346e0cb3d9ab6f5372fa29b46ebaee89.zip |
Integrate simplified message handling
Diffstat (limited to 'src/WixToolset.BuildTasks/DoIt.cs')
-rw-r--r-- | src/WixToolset.BuildTasks/DoIt.cs | 65 |
1 files changed, 61 insertions, 4 deletions
diff --git a/src/WixToolset.BuildTasks/DoIt.cs b/src/WixToolset.BuildTasks/DoIt.cs index dddf433c..aabd92b5 100644 --- a/src/WixToolset.BuildTasks/DoIt.cs +++ b/src/WixToolset.BuildTasks/DoIt.cs | |||
@@ -9,6 +9,7 @@ namespace WixToolset.BuildTasks | |||
9 | using Microsoft.Build.Utilities; | 9 | using Microsoft.Build.Utilities; |
10 | using WixToolset.Core; | 10 | using WixToolset.Core; |
11 | using WixToolset.Data; | 11 | using WixToolset.Data; |
12 | using WixToolset.Extensibility; | ||
12 | using WixToolset.Extensibility.Services; | 13 | using WixToolset.Extensibility.Services; |
13 | 14 | ||
14 | /// <summary> | 15 | /// <summary> |
@@ -16,11 +17,13 @@ namespace WixToolset.BuildTasks | |||
16 | /// </summary> | 17 | /// </summary> |
17 | public sealed class DoIt : Task | 18 | public sealed class DoIt : Task |
18 | { | 19 | { |
19 | public DoIt() | 20 | public DoIt() : this(null) |
20 | { | 21 | { |
21 | Messaging.Instance.InitializeAppName("WIX", "wix.exe"); | 22 | } |
22 | 23 | ||
23 | Messaging.Instance.Display += this.DisplayMessage; | 24 | public DoIt(IMessageListener listener) |
25 | { | ||
26 | this.Listener = listener ?? new MsbuildMessageListener(this.Log, "WIX", "wix.exe"); | ||
24 | } | 27 | } |
25 | 28 | ||
26 | public string AdditionalOptions { get; set; } | 29 | public string AdditionalOptions { get; set; } |
@@ -112,6 +115,8 @@ namespace WixToolset.BuildTasks | |||
112 | public string[] SuppressIces { get; set; } | 115 | public string[] SuppressIces { get; set; } |
113 | public string AdditionalCub { get; set; } | 116 | public string AdditionalCub { get; set; } |
114 | 117 | ||
118 | private IMessageListener Listener { get; } | ||
119 | |||
115 | public override bool Execute() | 120 | public override bool Execute() |
116 | { | 121 | { |
117 | try | 122 | try |
@@ -168,7 +173,11 @@ namespace WixToolset.BuildTasks | |||
168 | var serviceProvider = new WixToolsetServiceProvider(); | 173 | var serviceProvider = new WixToolsetServiceProvider(); |
169 | 174 | ||
170 | var context = serviceProvider.GetService<ICommandLineContext>(); | 175 | var context = serviceProvider.GetService<ICommandLineContext>(); |
171 | context.Messaging = Messaging.Instance; | 176 | |
177 | var messaging = serviceProvider.GetService<IMessaging>(); | ||
178 | messaging.SetListener(this.Listener); | ||
179 | |||
180 | context.Messaging = messaging; | ||
172 | context.ExtensionManager = this.CreateExtensionManagerWithStandardBackends(serviceProvider); | 181 | context.ExtensionManager = this.CreateExtensionManagerWithStandardBackends(serviceProvider); |
173 | context.Arguments = commandLineString; | 182 | context.Arguments = commandLineString; |
174 | 183 | ||
@@ -284,5 +293,53 @@ namespace WixToolset.BuildTasks | |||
284 | // commandLineBuilder.AppendFileNamesIfNotNull(this.SourceFiles, " "); | 293 | // commandLineBuilder.AppendFileNamesIfNotNull(this.SourceFiles, " "); |
285 | // } | 294 | // } |
286 | //} | 295 | //} |
296 | |||
297 | private class MsbuildMessageListener : IMessageListener | ||
298 | { | ||
299 | public MsbuildMessageListener(TaskLoggingHelper logger, string longName, string shortName) | ||
300 | { | ||
301 | this.Logger = logger; | ||
302 | this.LongAppName = longName; | ||
303 | this.ShortAppName = shortName; | ||
304 | } | ||
305 | |||
306 | public string ShortAppName { get; } | ||
307 | |||
308 | public string LongAppName { get; } | ||
309 | |||
310 | private TaskLoggingHelper Logger { get; } | ||
311 | |||
312 | public void Write(Message message) | ||
313 | { | ||
314 | switch (message.Level) | ||
315 | { | ||
316 | case MessageLevel.Error: | ||
317 | this.Logger.LogError(null, this.ShortAppName + message.Id.ToString(), null, message.SourceLineNumbers?.FileName ?? this.LongAppName, message.SourceLineNumbers?.LineNumber ?? 0, 0, 0, 0, message.ResourceNameOrFormat, message.MessageArgs); | ||
318 | break; | ||
319 | |||
320 | case MessageLevel.Warning: | ||
321 | this.Logger.LogWarning(null, this.ShortAppName + message.Id.ToString(), null, message.SourceLineNumbers?.FileName ?? this.LongAppName, message.SourceLineNumbers?.LineNumber ?? 0, 0, 0, 0, message.ResourceNameOrFormat, message.MessageArgs); | ||
322 | break; | ||
323 | |||
324 | default: | ||
325 | // TODO: Revisit this because something is going horribly awry. The commented out LogMessage call is crashing saying that the "message" parameter is null. When you look at the call stack, the code | ||
326 | // is in the wrong LogMessage override and the "null" subcategory was passed in as the message. Not clear why it is picking the wrong overload. | ||
327 | //if (message.Id > 0) | ||
328 | //{ | ||
329 | // this.Logger.LogMessage(null, code, null, message.SourceLineNumber?.FileName, message.SourceLineNumber?.LineNumber ?? 0, 0, 0, 0, MessageImportance.Normal, message.Format, message.FormatData); | ||
330 | //} | ||
331 | //else | ||
332 | //{ | ||
333 | this.Logger.LogMessage(MessageImportance.Normal, message.ResourceNameOrFormat, message.MessageArgs); | ||
334 | //} | ||
335 | break; | ||
336 | } | ||
337 | } | ||
338 | |||
339 | public void Write(string message) | ||
340 | { | ||
341 | this.Logger.LogMessage(MessageImportance.Low, message); | ||
342 | } | ||
343 | } | ||
287 | } | 344 | } |
288 | } | 345 | } |