diff --git a/src/main/kotlin/com/beust/kobalt/Plugins.kt b/src/main/kotlin/com/beust/kobalt/Plugins.kt index cb2918d3..4f25ee7a 100644 --- a/src/main/kotlin/com/beust/kobalt/Plugins.kt +++ b/src/main/kotlin/com/beust/kobalt/Plugins.kt @@ -154,8 +154,6 @@ public class Plugins @Inject constructor (val taskManagerProvider : Provider plugin.addStaticTask(annotation, project, toTask(method, project, plugin)) - annotation.runBefore.forEach { plugin.dependsOn(it, annotation.name) } - annotation.runAfter.forEach { plugin.dependsOn(annotation.name, it) } } } } diff --git a/src/main/kotlin/com/beust/kobalt/api/BasePlugin.kt b/src/main/kotlin/com/beust/kobalt/api/BasePlugin.kt index 5aa68e55..1813068f 100644 --- a/src/main/kotlin/com/beust/kobalt/api/BasePlugin.kt +++ b/src/main/kotlin/com/beust/kobalt/api/BasePlugin.kt @@ -16,19 +16,14 @@ abstract public class BasePlugin : Plugin { override fun accept(project: Project) = true var plugins : Plugins by Delegates.notNull() - fun addSyntheticTask(name: String, project: Project, task: (Project) -> TaskResult) { - val task = object: PluginTask() { - override val doc = "A synthetic task" - override val name = name - override val plugin = this@BasePlugin - override val project = project - - override fun call(): TaskResult2? { - val taskResult = task(project) - return TaskResult2(taskResult.success, this) - } - } - tasks.add(task) + /** + * Add a dynamic task. + */ + fun addTask(project: Project, name: String, description: String = "", + runBefore: List = arrayListOf(), + runAfter: List = arrayListOf(), + task: (Project) -> TaskResult) { + addGenericTask(project, name, description, runBefore, runAfter, task) } } diff --git a/src/main/kotlin/com/beust/kobalt/api/Plugin.kt b/src/main/kotlin/com/beust/kobalt/api/Plugin.kt index aacebc39..c6a635b1 100644 --- a/src/main/kotlin/com/beust/kobalt/api/Plugin.kt +++ b/src/main/kotlin/com/beust/kobalt/api/Plugin.kt @@ -18,12 +18,21 @@ public interface Plugin { val methodTasks : ArrayList fun addStaticTask(annotation: Task, project: Project, task: (Project) -> TaskResult) { - tasks.add(object : BasePluginTask(this, annotation.name, annotation.description, project) { - override fun call(): TaskResult2 { - val taskResult = task(project) - return TaskResult2(taskResult.success, this) - } - }) + addGenericTask(project, annotation.name, annotation.description, annotation.runBefore.toList(), + annotation.runAfter.toList(), task) + } + + fun addGenericTask(project: Project, name: String, description: String, + runBefore: List, runAfter: List, task: (Project) -> TaskResult) { + tasks.add( + object : BasePluginTask(this, name, description, project) { + override fun call(): TaskResult2 { + val taskResult = task(project) + return TaskResult2(taskResult.success, this) + } + }) + runBefore.forEach { dependsOn(it, name) } + runAfter.forEach { dependsOn(name, it) } } var taskManager : TaskManager