TeamCity.MSBuild.Logger/BuildMessageMessageUpdater.cs (47 lines of code) (raw):
namespace TeamCity.MSBuild.Logger
{
using JetBrains.TeamCity.ServiceMessages;
using JetBrains.TeamCity.ServiceMessages.Write.Special;
using Microsoft.Build.Framework;
internal class BuildMessageMessageUpdater: IServiceMessageUpdater
{
private readonly IEventContext _eventContext;
public BuildMessageMessageUpdater(IEventContext eventContext) =>
_eventContext = eventContext;
public IServiceMessage UpdateServiceMessage(IServiceMessage message)
{
if (_eventContext.TryGetEvent(out var buildEventManager)
&& buildEventManager is BuildMessageEventArgs msg)
{
var newMessage = new PatchedServiceMessage(message);
if (!string.IsNullOrWhiteSpace(msg.Code))
{
newMessage.Add("code", msg.Code);
}
if (!string.IsNullOrWhiteSpace(msg.File))
{
newMessage.Add("file", msg.File);
}
if (!string.IsNullOrWhiteSpace(msg.Subcategory))
{
newMessage.Add("subcategory", msg.Subcategory);
}
if (!string.IsNullOrWhiteSpace(msg.ProjectFile))
{
newMessage.Add("projectFile", msg.ProjectFile);
}
if (!string.IsNullOrWhiteSpace(msg.SenderName))
{
newMessage.Add("senderName", msg.SenderName);
}
newMessage.Add("columnNumber", msg.ColumnNumber.ToString());
newMessage.Add("endColumnNumber", msg.EndColumnNumber.ToString());
newMessage.Add("lineNumber", msg.LineNumber.ToString());
newMessage.Add("endLineNumber", msg.EndLineNumber.ToString());
newMessage.Add("importance", msg.Importance.ToString());
return newMessage;
}
return message;
}
}
}