Skip to content

Commit

Permalink
Add extended event info
Browse files Browse the repository at this point in the history
  • Loading branch information
NikolayPianikov authored and NikolayPianikov committed Feb 1, 2022
1 parent a17712d commit af1c101
Show file tree
Hide file tree
Showing 7 changed files with 190 additions and 2 deletions.
55 changes: 55 additions & 0 deletions TeamCity.MSBuild.Logger/BuildErrorMessageUpdater.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
namespace TeamCity.MSBuild.Logger
{
using JetBrains.TeamCity.ServiceMessages;
using JetBrains.TeamCity.ServiceMessages.Write.Special;
using Microsoft.Build.Framework;

internal class BuildErrorMessageUpdater: IServiceMessageUpdater
{
private readonly IEventContext _eventContext;

public BuildErrorMessageUpdater(IEventContext eventContext) =>
_eventContext = eventContext;

public IServiceMessage UpdateServiceMessage(IServiceMessage message)
{
if (_eventContext.TryGetEvent(out var buildEventManager)
&& buildEventManager is BuildErrorEventArgs error)
{
var newMessage = new PatchedServiceMessage(message);
if (!string.IsNullOrWhiteSpace(error.Code))
{
newMessage.Add("code", error.Code);
}

if (!string.IsNullOrWhiteSpace(error.File))
{
newMessage.Add("file", error.File);
}

if (!string.IsNullOrWhiteSpace(error.Subcategory))
{
newMessage.Add("subcategory", error.Subcategory);
}

if (!string.IsNullOrWhiteSpace(error.ProjectFile))
{
newMessage.Add("projectFile", error.ProjectFile);
}

if (!string.IsNullOrWhiteSpace(error.SenderName))
{
newMessage.Add("senderName", error.SenderName);
}

newMessage.Add("columnNumber", error.ColumnNumber.ToString());
newMessage.Add("endColumnNumber", error.EndColumnNumber.ToString());
newMessage.Add("lineNumber", error.LineNumber.ToString());
newMessage.Add("endLineNumber", error.EndLineNumber.ToString());
return newMessage;
}

return message;
}
}
}
57 changes: 57 additions & 0 deletions TeamCity.MSBuild.Logger/BuildMessageMessageUpdater.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
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;
}
}
}
55 changes: 55 additions & 0 deletions TeamCity.MSBuild.Logger/BuildWarningMessageUpdater.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
namespace TeamCity.MSBuild.Logger
{
using JetBrains.TeamCity.ServiceMessages;
using JetBrains.TeamCity.ServiceMessages.Write.Special;
using Microsoft.Build.Framework;

internal class BuildWarningMessageUpdater: IServiceMessageUpdater
{
private readonly IEventContext _eventContext;

public BuildWarningMessageUpdater(IEventContext eventContext) =>
_eventContext = eventContext;

public IServiceMessage UpdateServiceMessage(IServiceMessage message)
{
if (_eventContext.TryGetEvent(out var buildEventManager)
&& buildEventManager is BuildWarningEventArgs warning)
{
var newMessage = new PatchedServiceMessage(message);
if (!string.IsNullOrWhiteSpace(warning.Code))
{
newMessage.Add("code", warning.Code);
}

if (!string.IsNullOrWhiteSpace(warning.File))
{
newMessage.Add("file", warning.File);
}

if (!string.IsNullOrWhiteSpace(warning.Subcategory))
{
newMessage.Add("subcategory", warning.Subcategory);
}

if (!string.IsNullOrWhiteSpace(warning.ProjectFile))
{
newMessage.Add("projectFile", warning.ProjectFile);
}

if (!string.IsNullOrWhiteSpace(warning.SenderName))
{
newMessage.Add("senderName", warning.SenderName);
}

newMessage.Add("columnNumber", warning.ColumnNumber.ToString());
newMessage.Add("endColumnNumber", warning.EndColumnNumber.ToString());
newMessage.Add("lineNumber", warning.LineNumber.ToString());
newMessage.Add("endLineNumber", warning.EndLineNumber.ToString());
return newMessage;
}

return message;
}
}
}
5 changes: 4 additions & 1 deletion TeamCity.MSBuild.Logger/Composer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,10 @@ private static void Setup() =>
.Bind<IServiceMessageFormatter>().To<ServiceMessageFormatter>()
.Bind<IFlowIdGenerator>().To<FlowIdGenerator>()
.Bind<DateTime>().As(Transient).To(_ => DateTime.Now)
.Bind<IServiceMessageUpdater>().To<TimestampUpdater>()
.Bind<IServiceMessageUpdater>(typeof(TimestampUpdater)).To<TimestampUpdater>()
.Bind<IServiceMessageUpdater>(typeof(BuildErrorMessageUpdater)).To<BuildErrorMessageUpdater>()
.Bind<IServiceMessageUpdater>(typeof(BuildWarningMessageUpdater)).To<BuildWarningMessageUpdater>()
.Bind<IServiceMessageUpdater>(typeof(BuildMessageMessageUpdater)).To<BuildMessageMessageUpdater>()
.Bind<ITeamCityWriter>().To(
ctx => ctx.Resolve<ITeamCityServiceMessages>().CreateWriter(
str => ctx.Resolve<ILogWriter>(ColorMode.NoColor).Write(str + "\n")))
Expand Down
Empty file.
18 changes: 18 additions & 0 deletions TeamCity.MSBuild.Logger/PatchedServiceMessage.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
namespace TeamCity.MSBuild.Logger
{
using System;
using System.Linq;
using JetBrains.Annotations;
using JetBrains.TeamCity.ServiceMessages;
using JetBrains.TeamCity.ServiceMessages.Write;

internal class PatchedServiceMessage : ServiceMessage
{
public PatchedServiceMessage([NotNull] IServiceMessage message)
: base(message.Name)
{
if (message == null) throw new ArgumentNullException(nameof(message));
AddRange(message.Keys.ToDictionary(x => x, message.GetValue));
}
}
}
2 changes: 1 addition & 1 deletion TeamCity.MSBuild.Logger/TeamCity.MSBuild.Logger.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@

<ItemGroup>
<PackageReference Include="JetBrains.Annotations" Version="2021.3.0" />
<PackageReference Include="Pure.DI" Version="1.1.18">
<PackageReference Include="Pure.DI" Version="1.1.25">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
Expand Down

0 comments on commit af1c101

Please sign in to comment.