private void AddAvailTargetsArgumentForTask( IEnumerable <IHelperTask> allTargets, IHelperTask task, int indent = 0, int currentDepth = 0) { if (currentDepth >= 10) { return; } var taskString = string.Format("{0}- {1}", new string(' ', indent), task.Task.Name); this.Context.Information(taskString); var dependencyTargets = task.Task.Dependencies .Where(x => allTargets.Any(y => y.Task.Name == x && y.TaskType == task.TaskType)) .Select(x => this.TaskHelper.Tasks.FirstOrDefault(y => y.Task.Name == x)) .Where(x => x != null) .OrderBy(t => t.Task.Name) .ToArray(); foreach (var dTarget in dependencyTargets) { this.AddAvailTargetsArgumentForTask(allTargets, dTarget, indent + 2, currentDepth + 1); } }
/// <summary> /// Gets a Task Builder (with Does, IsDependentOn, etc) for Helper Task /// </summary> /// <param name="task">Helper Task</param> /// <returns>Task Builder</returns> /// <example> /// <code> /// var bCleanTask = TaskHelper.AddTask("TaskTest"); /// bCleanTask.GetTaskBuilder() /// .Does(() => { "Clean Solution" }); /// </code> /// </example> public static CakeTaskBuilder <ActionTask> GetTaskBuilder(this IHelperTask task) { if (task == null) { return(null); } return(new CakeTaskBuilder <ActionTask>(task.Task)); }
/// <summary> /// Adds dependency between tasks /// </summary> /// <param name="helper">TaskHelper</param> /// <param name="task">Helper Task</param> /// <param name="dependentTask">Helper Task</param> /// <example> /// <code> /// var bCleanTask = BuildCleanTask("Sln", true) /// .Does(() => { "Clean Solution" }); /// var bTask = BuildTask("Sln", true) /// .Does(() => { "Build Solution" }); /// TaskHelper.AddTaskDependency(bTask, bCleanTask); /// </code> /// </example> public static void AddTaskDependency( this IHelperTaskHandler helper, IHelperTask task, IHelperTask dependentTask) { if (dependentTask == null) { return; } helper.AddTaskDependency(task, dependentTask.TaskName); }
/// <summary> /// Adds dependency between tasks /// </summary> /// <param name="helper">TaskHelper</param> /// <param name="task">Helper Task</param> /// <param name="dependentTaskName">Task name</param> public static void AddTaskDependency( this IHelperTaskHandler helper, IHelperTask task, string dependentTaskName) { if (task == null) { throw new ArgumentNullException(nameof(task)); } helper.AddTaskDependency(task.GetTaskBuilder(), dependentTaskName); }
public void TaskHelper_AddTaskDependency_NoTask() { var context = this.GetMoqContext(new Dictionary <string, bool>(), new Dictionary <string, string>()); SingletonFactory.Context = context; var settings = SingletonFactory.GetHelperSettings(); settings.TaskTargetFunc = taskName => { return(new CakeTaskBuilder <ActionTask>(new ActionTask(taskName))); }; var taskHelper = SingletonFactory.GetTaskHelper(); Assert.IsNotNull(taskHelper); IHelperTask firstTask = null; Assert.ThrowsException <ArgumentNullException>(() => taskHelper.AddTaskDependency(firstTask, "test")); }
public void TaskHelper_GetBuildTask_NoTask() { var context = this.GetMoqContext(new Dictionary <string, bool>(), new Dictionary <string, string>()); SingletonFactory.Context = context; var settings = SingletonFactory.GetHelperSettings(); settings.TaskTargetFunc = taskName => { return(new CakeTaskBuilder <ActionTask>(new ActionTask(taskName))); }; var taskHelper = SingletonFactory.GetTaskHelper(); Assert.IsNotNull(taskHelper); IHelperTask firstTask = null; var buildTask = firstTask.GetTaskBuilder(); Assert.IsNull(buildTask); }
public void TaskHelper_AddTaskDependency_NoDependentTask() { var context = this.GetMoqContext(new Dictionary <string, bool>(), new Dictionary <string, string>()); SingletonFactory.Context = context; var settings = SingletonFactory.GetHelperSettings(); settings.TaskTargetFunc = taskName => { return(new CakeTaskBuilder <ActionTask>(new ActionTask(taskName))); }; var taskHelper = SingletonFactory.GetTaskHelper(); Assert.IsNotNull(taskHelper); var firstTask = taskHelper.AddTask("test"); IHelperTask nextTask = null; Assert.AreEqual(0, firstTask.Task.Dependencies.Count); taskHelper.AddTaskDependency(firstTask, nextTask); Assert.AreEqual(0, firstTask.Task.Dependencies.Count); }
/// <inheritdoc /> public CakeReport RunTarget(IHelperTask task) { return(this.RunTarget(task.TaskName)); }