From ccf53338be2db8218a4819064d03f389c36f7aa8 Mon Sep 17 00:00:00 2001 From: Brian Cristante <33549821+brcrista@users.noreply.github.com> Date: Tue, 12 Oct 2021 14:06:50 -0400 Subject: [PATCH] Add GNUMakeManager --- src/Runner.Worker/Handlers/GNUMakeManager.cs | 36 ++++++++++++++++++++ src/Runner.Worker/Handlers/ScriptHandler.cs | 2 ++ 2 files changed, 38 insertions(+) create mode 100644 src/Runner.Worker/Handlers/GNUMakeManager.cs diff --git a/src/Runner.Worker/Handlers/GNUMakeManager.cs b/src/Runner.Worker/Handlers/GNUMakeManager.cs new file mode 100644 index 000000000..ab8a780ac --- /dev/null +++ b/src/Runner.Worker/Handlers/GNUMakeManager.cs @@ -0,0 +1,36 @@ +using System.Text.RegularExpressions; +using GitHub.Runner.Sdk; + +namespace GitHub.Runner.Worker.Handlers +{ + public sealed class GNUMakeManager + { + public GNUMakeManager(IExecutionContext executionContext) + { + _executionContext = executionContext; + } + + public void OnDataReceived(object sender, ProcessDataReceivedEventArgs e) + { + var line = e.Data; + + + var startMatch = s_startMakeTargetRegex.Match(line); + if (startMatch.Success) + { + _executionContext.Output($"[DEBUG] Matched the start of target {startMatch.Value}."); + } + + var endMatch = s_endMakeTargetRegex.Match(line); + if (endMatch.Success) + { + _executionContext.Output($"[DEBUG] Matched the end of target {endMatch.Value}."); + } + } + + private readonly IExecutionContext _executionContext; + + private static readonly Regex s_startMakeTargetRegex = new Regex(@"Must remake target `(.+)'\.$", RegexOptions.Compiled); + private static readonly Regex s_endMakeTargetRegex = new Regex(@"Successfully remade target file `(.+)'\.$", RegexOptions.Compiled); + } +} \ No newline at end of file diff --git a/src/Runner.Worker/Handlers/ScriptHandler.cs b/src/Runner.Worker/Handlers/ScriptHandler.cs index da395c27a..3a8764174 100644 --- a/src/Runner.Worker/Handlers/ScriptHandler.cs +++ b/src/Runner.Worker/Handlers/ScriptHandler.cs @@ -289,6 +289,8 @@ namespace GitHub.Runner.Worker.Handlers using (var stdoutManager = new OutputManager(ExecutionContext, ActionCommandManager)) using (var stderrManager = new OutputManager(ExecutionContext, ActionCommandManager)) { + var makeManager = new GNUMakeManager(ExecutionContext); + StepHost.OutputDataReceived += makeManager.OnDataReceived; StepHost.OutputDataReceived += stdoutManager.OnDataReceived; StepHost.ErrorDataReceived += stderrManager.OnDataReceived;