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);
            }
        }
示例#2
0
        /// <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));
        }
示例#3
0
        /// <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);
        }
示例#4
0
        /// <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);
        }
示例#5
0
        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"));
        }
示例#6
0
        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);
        }
示例#7
0
        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);
        }
示例#8
0
 /// <inheritdoc />
 public CakeReport RunTarget(IHelperTask task)
 {
     return(this.RunTarget(task.TaskName));
 }