TeamCity.CSharpInteractive/DefaultBuildMessagesProcessor.cs (32 lines of code) (raw):

// ReSharper disable ClassNeverInstantiated.Global namespace TeamCity.CSharpInteractive; using HostApi; internal class DefaultBuildMessagesProcessor : IBuildMessagesProcessor { private readonly ITeamCitySettings _teamCitySettings; private readonly IProcessOutputWriter _processOutputWriter; private readonly IBuildMessageLogWriter _buildMessageLogWriter; public DefaultBuildMessagesProcessor( ITeamCitySettings teamCitySettings, IProcessOutputWriter processOutputWriter, IBuildMessageLogWriter buildMessageLogWriter) { _teamCitySettings = teamCitySettings; _processOutputWriter = processOutputWriter; _buildMessageLogWriter = buildMessageLogWriter; } public void ProcessMessages(in Output output, IEnumerable<BuildMessage> messages, Action<BuildMessage> nextHandler) { var curMessages = messages.ToArray(); if (_teamCitySettings.IsUnderTeamCity && curMessages.Any(i => i.State == BuildMessageState.ServiceMessage)) { _processOutputWriter.Write(output); } else { foreach (var buildMessage in curMessages) { _buildMessageLogWriter.Write(buildMessage); } } } }