From dac6ba2a589aa1e8a9f4a9c7af32026be77776b3 Mon Sep 17 00:00:00 2001 From: Paweł Marks Date: Thu, 14 Nov 2019 15:18:56 +0100 Subject: First plugin draft --- .../kotlin/org/jetbrains/dokka/gradle/DokkaTask.kt | 19 ++++++++++++------- .../dokka/gradle/configurationImplementations.kt | 1 + .../main/kotlin/org/jetbrains/dokka/gradle/main.kt | 11 +++++++++-- 3 files changed, 22 insertions(+), 9 deletions(-) (limited to 'runners/gradle-plugin/src') diff --git a/runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/DokkaTask.kt b/runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/DokkaTask.kt index 35ef118a..b668158d 100644 --- a/runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/DokkaTask.kt +++ b/runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/DokkaTask.kt @@ -63,6 +63,9 @@ open class DokkaTask : DefaultTask() { @Input var cacheRoot: String? = null + @Classpath + lateinit var pluginsConfiguration: Configuration + var multiplatform: NamedDomainObjectContainer @Suppress("UNCHECKED_CAST") @Nested get() = (DslObject(this).extensions.getByName(MULTIPLATFORM_EXTENSION_NAME) as NamedDomainObjectContainer) @@ -155,13 +158,15 @@ open class DokkaTask : DefaultTask() { val passConfigurationList = collectConfigurations() .map { defaultPassConfiguration(it, globalConfig) } - val configuration = GradleDokkaConfigurationImpl() - configuration.outputDir = outputDirectory - configuration.format = outputFormat - configuration.generateIndexPages = true - configuration.cacheRoot = cacheRoot - configuration.impliedPlatforms = impliedPlatforms - configuration.passesConfigurations = passConfigurationList + val configuration = GradleDokkaConfigurationImpl().apply { + outputDir = outputDirectory + format = outputFormat + generateIndexPages = true + cacheRoot = cacheRoot + impliedPlatforms = impliedPlatforms + passesConfigurations = passConfigurationList + pluginsClasspath = pluginsConfiguration.resolve().toList() + } bootstrapProxy.configure( BiConsumer { level, message -> diff --git a/runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/configurationImplementations.kt b/runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/configurationImplementations.kt index 767bf4f4..52caba41 100644 --- a/runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/configurationImplementations.kt +++ b/runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/configurationImplementations.kt @@ -124,6 +124,7 @@ class GradleDokkaConfigurationImpl: DokkaConfiguration { override var cacheRoot: String? = null override var impliedPlatforms: List = emptyList() override var passesConfigurations: List = emptyList() + override var pluginsClasspath: List = emptyList() } class GradlePackageOptionsImpl: PackageOptions, Serializable { diff --git a/runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/main.kt b/runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/main.kt index 6f8d55e4..d75d3b21 100644 --- a/runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/main.kt +++ b/runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/main.kt @@ -17,7 +17,8 @@ open class DokkaPlugin : Plugin { override fun apply(project: Project) { loadDokkaVersion() val dokkaRuntimeConfiguration = addConfiguration(project) - addTasks(project, dokkaRuntimeConfiguration, DokkaTask::class.java) + val pluginsConfiguration = project.configurations.create("dokkaPlugins") + addTasks(project, dokkaRuntimeConfiguration, pluginsConfiguration, DokkaTask::class.java) } private fun loadDokkaVersion() = DokkaVersion.loadFrom(javaClass.getResourceAsStream("/META-INF/gradle-plugins/org.jetbrains.dokka.properties")) @@ -27,7 +28,12 @@ open class DokkaPlugin : Plugin { defaultDependencies{ dependencies -> dependencies.add(project.dependencies.create("org.jetbrains.dokka:dokka-fatjar:${DokkaVersion.version}")) } } - private fun addTasks(project: Project, runtimeConfiguration: Configuration, taskClass: Class) { + private fun addTasks( + project: Project, + runtimeConfiguration: Configuration, + pluginsConfiguration: Configuration, + taskClass: Class + ) { if(GradleVersion.current() >= GradleVersion.version("4.10")) { project.tasks.register(taskName, taskClass) } else { @@ -37,6 +43,7 @@ open class DokkaPlugin : Plugin { task.multiplatform = project.container(GradlePassConfigurationImpl::class.java) task.configuration = GradlePassConfigurationImpl() task.dokkaRuntime = runtimeConfiguration + task.pluginsConfiguration = pluginsConfiguration task.outputDirectory = File(project.buildDir, taskName).absolutePath } } -- cgit