// Copyright Epic Games, Inc. All Rights Reserved. using EpicGames.Core; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Xml; namespace AutomationTool.Tasks { /// /// Parameters for a spawn task /// public class OnExitTaskParameters { /// /// Executable to spawn. /// [TaskParameter] public string Command = String.Empty; /// /// Whether to execute on lease termination /// [TaskParameter(Optional = true)] public bool Lease = false; } /// /// Spawns an external executable and waits for it to complete. /// [TaskElement("OnExit", typeof(OnExitTaskParameters))] public class OnExitTask : BgTaskImpl { /// /// Parameters for this task /// OnExitTaskParameters Parameters; /// /// Construct a spawn task /// /// Parameters for the task public OnExitTask(OnExitTaskParameters InParameters) { Parameters = InParameters; } /// public override async Task ExecuteAsync(JobContext Job, HashSet BuildProducts, Dictionary> TagNameToFileSet) { string[] commands = Parameters.Command.Split('\n').Select(x => x.Trim()).ToArray(); await AddCleanupCommandsAsync(commands, Parameters.Lease); } /// public override void Write(XmlWriter Writer) { Write(Writer, Parameters); } /// public override IEnumerable FindConsumedTagNames() { yield break; } /// public override IEnumerable FindProducedTagNames() { yield break; } } }