Skip to content

Commit

Permalink
Move initialization of global arguments to extension function in core…
Browse files Browse the repository at this point in the history
… module
  • Loading branch information
BarkingBad committed Jan 11, 2022
1 parent e7725ec commit c06dde1
Show file tree
Hide file tree
Showing 5 changed files with 17 additions and 19 deletions.
1 change: 1 addition & 0 deletions core/api/core.api
Expand Up @@ -5,6 +5,7 @@ public final class org/jetbrains/dokka/ConfigurationKt {
public static synthetic fun ExternalDocumentationLink$default (Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Lorg/jetbrains/dokka/ExternalDocumentationLinkImpl;
public static synthetic fun ExternalDocumentationLink$default (Ljava/net/URL;Ljava/net/URL;ILjava/lang/Object;)Lorg/jetbrains/dokka/ExternalDocumentationLinkImpl;
public static final fun GlobalDokkaConfiguration (Ljava/lang/String;)Lorg/jetbrains/dokka/GlobalDokkaConfiguration;
public static final fun apply (Lorg/jetbrains/dokka/DokkaConfiguration;Lorg/jetbrains/dokka/GlobalDokkaConfiguration;)Lorg/jetbrains/dokka/DokkaConfiguration;
public static final fun build (Ljava/lang/Iterable;)Ljava/util/List;
public static final fun toJsonString (Lorg/jetbrains/dokka/DokkaConfiguration;)Ljava/lang/String;
public static final fun toJsonString (Lorg/jetbrains/dokka/plugability/ConfigurableBlock;)Ljava/lang/String;
Expand Down
15 changes: 15 additions & 0 deletions core/src/main/kotlin/configuration.kt
Expand Up @@ -3,6 +3,7 @@
package org.jetbrains.dokka

import org.jetbrains.dokka.plugability.ConfigurableBlock
import org.jetbrains.dokka.utilities.cast
import org.jetbrains.dokka.utilities.parseJson
import org.jetbrains.dokka.utilities.toJsonString
import java.io.File
Expand Down Expand Up @@ -100,6 +101,20 @@ data class GlobalDokkaConfiguration(

fun GlobalDokkaConfiguration(json: String): GlobalDokkaConfiguration = parseJson(json)

fun DokkaConfiguration.apply(globals: GlobalDokkaConfiguration): DokkaConfiguration = this.apply {
sourceSets.forEach {
it.perPackageOptions.cast<MutableList<DokkaConfiguration.PackageOptions>>().addAll(globals.perPackageOptions ?: emptyList())
}

sourceSets.forEach {
it.externalDocumentationLinks.cast<MutableSet<DokkaConfiguration.ExternalDocumentationLink>>().addAll(globals.externalDocumentationLinks ?: emptyList())
}

sourceSets.forEach {
it.sourceLinks.cast<MutableSet<SourceLinkDefinitionImpl>>().addAll(globals.sourceLinks ?: emptyList())
}
}

fun DokkaConfiguration.toJsonString(): String = toJsonString(this)
fun <T : ConfigurableBlock> T.toJsonString(): String = toJsonString(this)

Expand Down
3 changes: 0 additions & 3 deletions integration-tests/cli/build.gradle.kts
Expand Up @@ -12,8 +12,6 @@ evaluationDependsOn(":plugins:base")
dependencies {
implementation(kotlin("stdlib"))
implementation(kotlin("test-junit"))
val jackson_version: String by project
implementation("com.fasterxml.jackson.module:jackson-module-kotlin:$jackson_version")
}

/* Create a fat base plugin jar for cli tests */
Expand All @@ -25,7 +23,6 @@ val basePluginShadow: Configuration by configurations.creating {

dependencies {
basePluginShadow(project(":plugins:base"))

}
val basePluginShadowJar by tasks.register("basePluginShadowJar", ShadowJar::class) {
configurations = listOf(basePluginShadow)
Expand Down
4 changes: 0 additions & 4 deletions runners/cli/build.gradle.kts
Expand Up @@ -10,10 +10,6 @@ dependencies {
implementation("org.jetbrains.kotlinx:kotlinx-cli-jvm:0.3.3")
implementation(project(":core"))
implementation(kotlin("stdlib"))
val jackson_version: String by project
implementation("com.fasterxml.jackson.module:jackson-module-kotlin:$jackson_version")

testImplementation(kotlin("test-junit"))
}

tasks {
Expand Down
13 changes: 1 addition & 12 deletions runners/cli/src/main/kotlin/cli/main.kt
Expand Up @@ -408,19 +408,8 @@ fun initializeConfiguration(globalArguments: GlobalArguments): DokkaConfiguratio
val jsonContent = Paths.get(checkNotNull(globalArguments.json)).toFile().readText()
val globals = GlobalDokkaConfiguration(jsonContent)
val dokkaConfigurationImpl = DokkaConfigurationImpl(jsonContent)
dokkaConfigurationImpl.apply {
sourceSets.forEach {
it.perPackageOptions.cast<MutableList<DokkaConfiguration.PackageOptions>>().addAll(globals.perPackageOptions ?: emptyList())
}

sourceSets.forEach {
it.externalDocumentationLinks.cast<MutableSet<ExternalDocumentationLink>>().addAll(globals.externalDocumentationLinks ?: emptyList())
}

sourceSets.forEach {
it.sourceLinks.cast<MutableSet<SourceLinkDefinitionImpl>>().addAll(globals.sourceLinks ?: emptyList())
}

dokkaConfigurationImpl.apply(globals).apply {
sourceSets.forEach {
it.externalDocumentationLinks.cast<MutableSet<ExternalDocumentationLink>>().addAll(defaultLinks(it))
}
Expand Down

0 comments on commit c06dde1

Please sign in to comment.