From 9589161d9861a1d2eb02df1c5858b3ff67ca0c7a Mon Sep 17 00:00:00 2001 From: Marcin Aman Date: Fri, 26 Mar 2021 17:35:44 +0100 Subject: Reintroduce multimodule documentation (#1804) --- .../kotlin/org/jetbrains/dokka/gradle/AbstractDokkaTask.kt | 1 - .../org/jetbrains/dokka/gradle/DokkaMultiModuleTask.kt | 14 ++++++++------ .../org/jetbrains/dokka/gradle/DokkaMultiModuleTaskTest.kt | 9 ++++++--- 3 files changed, 14 insertions(+), 10 deletions(-) (limited to 'runners/gradle-plugin') diff --git a/runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/AbstractDokkaTask.kt b/runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/AbstractDokkaTask.kt index d2506f7a..6c1e6ab6 100644 --- a/runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/AbstractDokkaTask.kt +++ b/runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/AbstractDokkaTask.kt @@ -19,7 +19,6 @@ import org.jetbrains.dokka.plugability.ConfigurableBlock import org.jetbrains.dokka.plugability.DokkaPlugin import java.io.File import java.util.function.BiConsumer -import kotlin.reflect.KClass import kotlin.reflect.full.createInstance abstract class AbstractDokkaTask : DefaultTask() { diff --git a/runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/DokkaMultiModuleTask.kt b/runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/DokkaMultiModuleTask.kt index c68b53b8..b0683204 100644 --- a/runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/DokkaMultiModuleTask.kt +++ b/runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/DokkaMultiModuleTask.kt @@ -1,11 +1,9 @@ package org.jetbrains.dokka.gradle +import org.gradle.api.file.ConfigurableFileCollection import org.gradle.api.internal.tasks.TaskDependencyInternal import org.gradle.api.provider.Property -import org.gradle.api.tasks.Input -import org.gradle.api.tasks.InputFiles -import org.gradle.api.tasks.Internal -import org.gradle.api.tasks.OutputDirectories +import org.gradle.api.tasks.* import org.jetbrains.dokka.DokkaConfigurationImpl import org.jetbrains.dokka.DokkaModuleDescriptionImpl import java.io.File @@ -17,6 +15,9 @@ typealias DokkaMultimoduleTask = DokkaMultiModuleTask private typealias TaskPath = String abstract class DokkaMultiModuleTask : AbstractDokkaParentTask() { + @InputFiles + @Optional + val includes: ConfigurableFileCollection = project.files() @Internal val fileLayout: Property = project.objects.safeProperty() @@ -32,7 +33,7 @@ abstract class DokkaMultiModuleTask : AbstractDokkaParentTask() { @get:Input internal val childDokkaTaskIncludes: Map> - get() = childDokkaTasks.filterIsInstance().associate { task -> + get() = childDokkaTasks.filterIsInstance().associate { task -> task.path to task.dokkaSourceSets.flatMap { it.includes }.toSet() } @@ -61,7 +62,8 @@ abstract class DokkaMultiModuleTask : AbstractDokkaParentTask() { includes = childDokkaTaskIncludes[dokkaTask.path].orEmpty(), sourceOutputDirectory = dokkaTask.outputDirectory.getSafe() ) - } + }, + includes = includes.toSet(), ) } diff --git a/runners/gradle-plugin/src/test/kotlin/org/jetbrains/dokka/gradle/DokkaMultiModuleTaskTest.kt b/runners/gradle-plugin/src/test/kotlin/org/jetbrains/dokka/gradle/DokkaMultiModuleTaskTest.kt index cc9d8706..54f01fa5 100644 --- a/runners/gradle-plugin/src/test/kotlin/org/jetbrains/dokka/gradle/DokkaMultiModuleTaskTest.kt +++ b/runners/gradle-plugin/src/test/kotlin/org/jetbrains/dokka/gradle/DokkaMultiModuleTaskTest.kt @@ -22,7 +22,7 @@ class DokkaMultiModuleTaskTest { .withProjectDir(rootProject.projectDir.resolve("child")) .withParent(rootProject).build() - private val childDokkaTask = childProject.tasks.create("childDokkaTask") + private val childDokkaTask = childProject.tasks.create("childDokkaTask") private val multiModuleTask = rootProject.tasks.create("multiModuleTask").apply { addChildTask(childDokkaTask) @@ -53,6 +53,7 @@ class DokkaMultiModuleTaskTest { fun buildDokkaConfiguration() { val include1 = childDokkaTask.project.file("include1.md") val include2 = childDokkaTask.project.file("include2.md") + val topLevelInclude = multiModuleTask.project.file("README.md") childDokkaTask.apply { dokkaSourceSets.create("main") @@ -69,6 +70,7 @@ class DokkaMultiModuleTaskTest { pluginsConfiguration.add(PluginConfigurationImpl("pluginA", DokkaConfiguration.SerializationFormat.JSON, """ { "key" : "value2" } """)) failOnWarning by true offlineMode by true + includes.from(listOf(topLevelInclude)) } val dokkaConfiguration = multiModuleTask.buildDokkaConfiguration() @@ -81,6 +83,7 @@ class DokkaMultiModuleTaskTest { pluginsClasspath = emptyList(), failOnWarning = true, offlineMode = true, + includes = setOf(topLevelInclude), modules = listOf( DokkaModuleDescriptionImpl( name = "child", @@ -100,7 +103,7 @@ class DokkaMultiModuleTaskTest { assertEquals(1, dependenciesInitial.size, "Expected one dependency") val dependency = dependenciesInitial.single() - assertTrue(dependency is DokkaTask, "Expected dependency to be of Type ${DokkaTask::class.simpleName}") + assertTrue(dependency is DokkaTaskPartial, "Expected dependency to be of Type ${DokkaTaskPartial::class.simpleName}") assertEquals(childProject, dependency.project, "Expected dependency from child project") @@ -138,7 +141,7 @@ class DokkaMultiModuleTaskTest { } val secondChildDokkaTaskInclude = childProject.file("include4") - val secondChildDokkaTask = childProject.tasks.create("secondChildDokkaTask") { + val secondChildDokkaTask = childProject.tasks.create("secondChildDokkaTask") { dokkaSourceSets.create("main") { it.includes.from(secondChildDokkaTaskInclude) } -- cgit