diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/Plugins.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/Plugins.kt index 2fb87dd2..d2646a04 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/Plugins.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/Plugins.kt @@ -47,6 +47,8 @@ class Plugins @Inject constructor (val taskManagerProvider : Provider) { plugins.forEach { plugin -> addPluginInstance(plugin) diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/api/BasePlugin.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/api/BasePlugin.kt index 66f5cebb..ff6d1e95 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/api/BasePlugin.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/api/BasePlugin.kt @@ -12,6 +12,8 @@ abstract class BasePlugin : IPlugin { this.context = context } + override fun shutdown() {} + override lateinit var taskManager: TaskManager lateinit var plugins: Plugins } diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/api/IPlugin.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/api/IPlugin.kt index 97eaa2e0..e9d7acb6 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/api/IPlugin.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/api/IPlugin.kt @@ -2,9 +2,29 @@ package com.beust.kobalt.api import com.beust.kobalt.internal.TaskManager -public interface IPlugin : IPluginActor { +interface IPlugin : IPluginActor { + /** + * The name of this plug-in. + */ val name: String + + /** + * @return true if this plug-in decided it should be enabled for this project. + */ fun accept(project: Project) : Boolean + + /** + * Invoked on all plug-ins before the Kobalt execution stops. + */ + fun shutdown() + + /** + * Main entry point for a plug-in to initialize itself based on a project and a context. + */ fun apply(project: Project, context: KobaltContext) {} + + /** + * Injected by Kobalt to manage tasks. + */ var taskManager : TaskManager } diff --git a/src/main/kotlin/com/beust/kobalt/Main.kt b/src/main/kotlin/com/beust/kobalt/Main.kt index 207dc8ed..a7e1dafd 100644 --- a/src/main/kotlin/com/beust/kobalt/Main.kt +++ b/src/main/kotlin/com/beust/kobalt/Main.kt @@ -233,6 +233,9 @@ private class Main @Inject constructor( result = runTargetResult.exitCode } + // Shutdown all plug-ins + plugins.shutdownPlugins() + log(3, "Timings:\n " + runTargetResult.messages.joinToString("\n ")) } }