1
0
Fork 0
mirror of https://github.com/ethauvin/kobalt.git synced 2025-04-26 08:27:12 -07:00

Introducing PluginConfig.

This commit is contained in:
Cedric Beust 2015-11-15 17:14:24 -08:00
parent 5d56826d88
commit db4df19671
2 changed files with 19 additions and 13 deletions

View file

@ -0,0 +1,12 @@
package com.beust.kobalt.api
/**
* A plug-in that has some per-project configuration in the build file.
*/
abstract public class ConfigPlugin<T> : BasePlugin() {
private val configurations = hashMapOf<String, T>()
fun configurationFor(project: Project) = configurations[project.name]
fun addConfiguration(project: Project, configuration: T) = configurations.put(project.name, configuration)
}

View file

@ -3,7 +3,7 @@ package com.beust.kobalt.plugin.dokka
import com.beust.kobalt.JavaInfo import com.beust.kobalt.JavaInfo
import com.beust.kobalt.SystemProperties import com.beust.kobalt.SystemProperties
import com.beust.kobalt.TaskResult import com.beust.kobalt.TaskResult
import com.beust.kobalt.api.BasePlugin import com.beust.kobalt.api.ConfigPlugin
import com.beust.kobalt.api.Kobalt import com.beust.kobalt.api.Kobalt
import com.beust.kobalt.api.Project import com.beust.kobalt.api.Project
import com.beust.kobalt.api.annotation.Directive import com.beust.kobalt.api.annotation.Directive
@ -17,7 +17,7 @@ import javax.inject.Inject
import javax.inject.Singleton import javax.inject.Singleton
@Singleton @Singleton
class DokkaPlugin @Inject constructor(val depFactory: DepFactory) : BasePlugin() { class DokkaPlugin @Inject constructor(val depFactory: DepFactory) : ConfigPlugin<DokkaConfig>() {
override val name = PLUGIN_NAME override val name = PLUGIN_NAME
companion object { companion object {
@ -34,7 +34,7 @@ class DokkaPlugin @Inject constructor(val depFactory: DepFactory) : BasePlugin()
) )
fun taskDokka(project: Project) : TaskResult { fun taskDokka(project: Project) : TaskResult {
val javaExecutable = JavaInfo.create(File(SystemProperties.javaBase)).javaExecutable!! val javaExecutable = JavaInfo.create(File(SystemProperties.javaBase)).javaExecutable!!
val config = configurations[project.name] val config = configurationFor(project)
val classpath = context.dependencyManager.calculateDependencies(project, context) val classpath = context.dependencyManager.calculateDependencies(project, context)
val buildDir = project.projectProperties.getString(JvmCompilerPlugin.BUILD_DIR) val buildDir = project.projectProperties.getString(JvmCompilerPlugin.BUILD_DIR)
val classpathString = (classpath.map { it.jarFile.get().absolutePath } + val classpathString = (classpath.map { it.jarFile.get().absolutePath } +
@ -55,12 +55,6 @@ class DokkaPlugin @Inject constructor(val depFactory: DepFactory) : BasePlugin()
} }
return TaskResult() return TaskResult()
} }
private val configurations = hashMapOf<String, DokkaConfig>()
fun addDokkaConfiguration(name: String, dokkaConfig: DokkaConfig) {
configurations.put(name, dokkaConfig)
}
} }
/* /*
@ -76,7 +70,7 @@ module - the name of the module being documented (used as the root directory of
include - names of files containing the documentation for the module and individual packages include - names of files containing the documentation for the module and individual packages
nodeprecated nodeprecated
*/ */
class DokkaConfig(project: Project) { class DokkaConfig() {
val args = arrayListOf<String>() val args = arrayListOf<String>()
fun args(vararg options: String) { fun args(vararg options: String) {
args.addAll(options) args.addAll(options)
@ -84,10 +78,10 @@ class DokkaConfig(project: Project) {
} }
@Directive @Directive
public fun Project.dokka(init: DokkaConfig.() -> Unit) { public fun Project.dokka(init: DokkaConfig.() -> Unit) = let { project ->
with(DokkaConfig(this)) { with(DokkaConfig()) {
init() init()
(Kobalt.findPlugin(DokkaPlugin.PLUGIN_NAME) as DokkaPlugin).addDokkaConfiguration(name, this) (Kobalt.findPlugin(DokkaPlugin.PLUGIN_NAME) as DokkaPlugin).addConfiguration(project, this)
} }
} }