From 1a23887b519bfc6c5b7adc9728c7a03b752b7a83 Mon Sep 17 00:00:00 2001 From: Chris Blyth Date: Fri, 21 Oct 2022 14:04:58 +0100 Subject: [PATCH] (#4019) Add build status update messages --- .../Build/TeamCity/ITeamCityProvider.cs | 23 ++++++++- .../Build/TeamCity/TeamCityProvider.cs | 48 +++++++++++++++++++ 2 files changed, 70 insertions(+), 1 deletion(-) diff --git a/src/Cake.Common/Build/TeamCity/ITeamCityProvider.cs b/src/Cake.Common/Build/TeamCity/ITeamCityProvider.cs index 33f9e6b02d..b415cdb815 100644 --- a/src/Cake.Common/Build/TeamCity/ITeamCityProvider.cs +++ b/src/Cake.Common/Build/TeamCity/ITeamCityProvider.cs @@ -153,13 +153,34 @@ public interface ITeamCityProvider void WriteStartProgress(string message); /// - /// Write a status message to the TeamCity build log. + /// Write a message to the TeamCity build log. - Messages not added to the build status. /// /// Message contents. /// Build status. /// Error details if status is error. void WriteStatus(string message, string status = "NORMAL", string errorDetails = null); + /// + /// Write a status message to the TeamCity build log. - Prepend message to build status. + /// + /// Message contents. + /// Build status. + void WritePrependBuildStatus(string message, string status = null); + + /// + /// Write a status message to the TeamCity build log. - append message to build status. + /// + /// Message contents. + /// Build status. + void WriteAppendBuildStatus(string message, string status = null); + + /// + /// Write a status message to the TeamCity build log. - replace existing build status. + /// + /// Message contents. + /// Build status. + void WriteReplacementBuildStatus(string message, string status = null); + /// /// Write a statistic message to the TeamCity build log. /// diff --git a/src/Cake.Common/Build/TeamCity/TeamCityProvider.cs b/src/Cake.Common/Build/TeamCity/TeamCityProvider.cs index 5d4eab0354..e2a9318dd6 100644 --- a/src/Cake.Common/Build/TeamCity/TeamCityProvider.cs +++ b/src/Cake.Common/Build/TeamCity/TeamCityProvider.cs @@ -120,6 +120,54 @@ public void WriteStatus(string message, string status = "NORMAL", string errorDe WriteServiceMessage("message", attrs); } + /// + public void WriteAppendBuildStatus(string message, string status = null) + { + var attrs = new Dictionary + { + { "text", $"{{build.status.text}}; {message}" } + }; + + if (status != null) + { + attrs.Add("status", status); + } + + WriteServiceMessage("buildStatus", attrs); + } + + /// + public void WritePrependBuildStatus(string message, string status = null) + { + var attrs = new Dictionary + { + { "text", $"{message}; {{build.status.text}}" } + }; + + if (status != null) + { + attrs.Add("status", status); + } + + WriteServiceMessage("buildStatus", attrs); + } + + /// + public void WriteReplacementBuildStatus(string message, string status = null) + { + var attrs = new Dictionary + { + { "text", message } + }; + + if (status != null) + { + attrs.Add("status", status); + } + + WriteServiceMessage("buildStatus", attrs); + } + /// public void ImportData(string type, FilePath path) {