mirror of
https://github.com/actions/runner.git
synced 2025-12-10 20:36:49 +00:00
* Defer evaluation of a step's DisplayName until its condition is evaluated. * Formalize TryUpdateDisplayName and EvaluateDisplayName as members of interface `IStep` (#2374)
51 lines
1.5 KiB
C#
51 lines
1.5 KiB
C#
using System;
|
|
using System.Threading.Tasks;
|
|
using GitHub.DistributedTask.ObjectTemplating.Tokens;
|
|
using GitHub.DistributedTask.Pipelines.ContextData;
|
|
|
|
namespace GitHub.Runner.Worker
|
|
{
|
|
public sealed class JobExtensionRunner : IStep
|
|
{
|
|
private readonly object _data;
|
|
private readonly Func<IExecutionContext, object, Task> _runAsync;
|
|
|
|
public JobExtensionRunner(
|
|
Func<IExecutionContext, object, Task> runAsync,
|
|
string condition,
|
|
string displayName,
|
|
object data)
|
|
{
|
|
_runAsync = runAsync;
|
|
Condition = condition;
|
|
DisplayName = displayName;
|
|
_data = data;
|
|
}
|
|
|
|
public string Condition { get; set; }
|
|
public TemplateToken ContinueOnError => new BooleanToken(null, null, null, false);
|
|
public string DisplayName { get; set; }
|
|
public IExecutionContext ExecutionContext { get; set; }
|
|
public TemplateToken Timeout => new NumberToken(null, null, null, 0);
|
|
public object Data => _data;
|
|
|
|
public async Task RunAsync()
|
|
{
|
|
await _runAsync(ExecutionContext, _data);
|
|
}
|
|
|
|
public bool TryUpdateDisplayName(out bool updated)
|
|
{
|
|
updated = false;
|
|
return !string.IsNullOrEmpty(this.DisplayName);
|
|
}
|
|
|
|
public bool EvaluateDisplayName(DictionaryContextData contextData, IExecutionContext context, out bool updated)
|
|
{
|
|
updated = false;
|
|
return !string.IsNullOrEmpty(this.DisplayName);
|
|
}
|
|
|
|
}
|
|
}
|