From 8399171d3fb1281628cf0f78e8fa917c102807f5 Mon Sep 17 00:00:00 2001 From: DevCharly Date: Fri, 1 Jul 2016 23:57:53 +0200 Subject: [PATCH 1/2] fix #244: support "project related tasks" (e.g. dynamic task defined for a single project) --- .../com/beust/kobalt/internal/TaskManager.kt | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/TaskManager.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/TaskManager.kt index 2a534d71..51ed560b 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/TaskManager.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/TaskManager.kt @@ -79,7 +79,17 @@ class TaskManager @Inject constructor(val args: Args, } fun runTargets(passedTaskNames: List, allProjects: List): RunTargetResult { - val taskInfos = calculateDependentTaskNames(passedTaskNames, allProjects) + // Check whether tasks passed at command line exist + passedTaskNames.forEach { + if (!hasTask(TaskInfo(it))) + throw KobaltException("Unknown task: $it") + } + + var taskInfos = calculateDependentTaskNames(passedTaskNames, allProjects) + + // Remove not existing tasks (e.g. dynamic task defined for a single project) + taskInfos = taskInfos.filter { hasTask(it) } + val projectsToRun = findProjectsToRun(taskInfos, allProjects) return runProjects(taskInfos, projectsToRun) } @@ -483,6 +493,12 @@ class TaskManager @Inject constructor(val args: Args, alwaysRunAfter.forEach { alwaysRunAfter(it, name) } } + fun hasTask(ti: TaskInfo): Boolean { + val taskName = ti.taskName + val project = ti.project + return annotationTasks.any { taskName == it.name && (project == null || project == it.project.name) } + } + /** * Invoked by the server whenever it's done processing a command so the state can be reset for the next command. */ From 2cbe3ad560e0329eca5c206eef3acf07aa1c6397 Mon Sep 17 00:00:00 2001 From: DevCharly Date: Sat, 2 Jul 2016 00:40:05 +0200 Subject: [PATCH 2/2] #244: removed no longer necessary check for unknown task in createGraph2() --- .../src/main/kotlin/com/beust/kobalt/internal/TaskManager.kt | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/TaskManager.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/TaskManager.kt index 51ed560b..8b5459f3 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/TaskManager.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/TaskManager.kt @@ -87,7 +87,7 @@ class TaskManager @Inject constructor(val args: Args, var taskInfos = calculateDependentTaskNames(passedTaskNames, allProjects) - // Remove not existing tasks (e.g. dynamic task defined for a single project) + // Remove not existing tasks (e.g. dynamic task defined for a single project) taskInfos = taskInfos.filter { hasTask(it) } val projectsToRun = findProjectsToRun(taskInfos, allProjects) @@ -277,9 +277,6 @@ class TaskManager @Inject constructor(val args: Args, // Keep only the tasks we need to run. // val taskInfos = passedTasks.filter { - if (!nodeMap.keys().contains(it.taskName)) { - throw KobaltException("Unknown task: $it") - } it.matches(projectName) }