Skip to content

Commit

Permalink
Apply requested changes
Browse files Browse the repository at this point in the history
  • Loading branch information
BarkingBad committed Jan 7, 2022
1 parent 0ae0222 commit e7725ec
Show file tree
Hide file tree
Showing 9 changed files with 37 additions and 93 deletions.
16 changes: 16 additions & 0 deletions core/api/core.api
Expand Up @@ -4,6 +4,7 @@ public final class org/jetbrains/dokka/ConfigurationKt {
public static final fun ExternalDocumentationLink (Ljava/net/URL;Ljava/net/URL;)Lorg/jetbrains/dokka/ExternalDocumentationLinkImpl;
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 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 Expand Up @@ -343,6 +344,21 @@ public final class org/jetbrains/dokka/ExternalDocumentationLinkImpl : org/jetbr
public fun toString ()Ljava/lang/String;
}

public final class org/jetbrains/dokka/GlobalDokkaConfiguration {
public fun <init> (Ljava/util/List;Ljava/util/List;Ljava/util/List;)V
public final fun component1 ()Ljava/util/List;
public final fun component2 ()Ljava/util/List;
public final fun component3 ()Ljava/util/List;
public final fun copy (Ljava/util/List;Ljava/util/List;Ljava/util/List;)Lorg/jetbrains/dokka/GlobalDokkaConfiguration;
public static synthetic fun copy$default (Lorg/jetbrains/dokka/GlobalDokkaConfiguration;Ljava/util/List;Ljava/util/List;Ljava/util/List;ILjava/lang/Object;)Lorg/jetbrains/dokka/GlobalDokkaConfiguration;
public fun equals (Ljava/lang/Object;)Z
public final fun getExternalDocumentationLinks ()Ljava/util/List;
public final fun getPerPackageOptions ()Ljava/util/List;
public final fun getSourceLinks ()Ljava/util/List;
public fun hashCode ()I
public fun toString ()Ljava/lang/String;
}

public final class org/jetbrains/dokka/PackageOptionsImpl : org/jetbrains/dokka/DokkaConfiguration$PackageOptions {
public fun <init> (Ljava/lang/String;ZLjava/lang/Boolean;ZZLjava/util/Set;)V
public final fun component1 ()Ljava/lang/String;
Expand Down
14 changes: 14 additions & 0 deletions core/src/main/kotlin/configuration.kt
Expand Up @@ -86,6 +86,20 @@ data class DokkaSourceSetID(

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

/**
* Global options are applied to all packages and modules and overwrite package configuration.
*
* These are handy if we have multiple sourcesets sharing the same global options as it reduces the size of the boilerplate.
* Otherwise, the user would be enforced to repeat all these options per each sourceset.
*/
data class GlobalDokkaConfiguration(
val perPackageOptions: List<PackageOptionsImpl>?,
val externalDocumentationLinks: List<ExternalDocumentationLinkImpl>?,
val sourceLinks: List<SourceLinkDefinitionImpl>?
)

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

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

Expand Down
1 change: 0 additions & 1 deletion core/src/main/kotlin/utilities/json.kt
Expand Up @@ -34,7 +34,6 @@ internal fun toJsonString(value: Any): String = objectMapper.writeValueAsString(
@PublishedApi
internal inline fun <reified T : Any> parseJson(json: String): T = parseJson(json, TypeReference())


@PublishedApi
internal fun <T : Any> parseJson(json: String, typeReference: TypeReference<T>): T =
objectMapper.readValue(json, typeReference.jackson)
Expand Down
Expand Up @@ -264,7 +264,7 @@ class CliIntegrationTest : AbstractCliIntegrationTest() {


@Test
fun json() {
fun `should accept json as input configuration`() {
val dokkaOutputDir = File(projectDir, "output")
assertTrue(dokkaOutputDir.mkdirs())
val jsonPath = javaClass.getResource("/my-file.json")?.path ?: throw IllegalStateException("No JSON found!")
Expand Down Expand Up @@ -303,7 +303,7 @@ class CliIntegrationTest : AbstractCliIntegrationTest() {
* make sure that global settings apply to dokka context.
*/
@Test
fun jsonWithGlobals() {
fun `global settings should overwrite package options in configuration`() {
val dokkaOutputDir = File(projectDir, "output")
assertTrue(dokkaOutputDir.mkdirs())
val jsonPath = javaClass.getResource("/my-file.json")?.path ?: throw IllegalStateException("No JSON found!")
Expand Down
10 changes: 0 additions & 10 deletions plugins/all-modules-page/out/index.md

This file was deleted.

27 changes: 0 additions & 27 deletions runners/cli/api/cli.api
Expand Up @@ -87,37 +87,10 @@ public final class org/jetbrains/dokka/GlobalArguments : org/jetbrains/dokka/Dok
public fun getSuppressObviousFunctions ()Z
}

public final class org/jetbrains/dokka/GlobalDokkaConfiguration {
public fun <init> (Ljava/util/List;Ljava/util/List;Ljava/util/List;)V
public final fun component1 ()Ljava/util/List;
public final fun component2 ()Ljava/util/List;
public final fun component3 ()Ljava/util/List;
public final fun copy (Ljava/util/List;Ljava/util/List;Ljava/util/List;)Lorg/jetbrains/dokka/GlobalDokkaConfiguration;
public static synthetic fun copy$default (Lorg/jetbrains/dokka/GlobalDokkaConfiguration;Ljava/util/List;Ljava/util/List;Ljava/util/List;ILjava/lang/Object;)Lorg/jetbrains/dokka/GlobalDokkaConfiguration;
public fun equals (Ljava/lang/Object;)Z
public final fun getExternalDocumentationLinks ()Ljava/util/List;
public final fun getPerPackageOptions ()Ljava/util/List;
public final fun getSourceLinks ()Ljava/util/List;
public fun hashCode ()I
public fun toString ()Ljava/lang/String;
}

public final class org/jetbrains/dokka/JsonMapperForCLIKt {
public static final fun parseJson (Ljava/lang/String;Lorg/jetbrains/dokka/TypeReference;)Ljava/lang/Object;
}

public final class org/jetbrains/dokka/MainKt {
public static final fun defaultLinks (Lorg/jetbrains/dokka/DokkaConfiguration$DokkaSourceSet;)Ljava/util/List;
public static final fun initializeConfiguration (Lorg/jetbrains/dokka/GlobalArguments;)Lorg/jetbrains/dokka/DokkaConfiguration;
public static final fun main ([Ljava/lang/String;)V
public static final fun parseLinks (Ljava/util/List;)Ljava/util/List;
}

public final class org/jetbrains/dokka/TypeReference {
public static final field Companion Lorg/jetbrains/dokka/TypeReference$Companion;
public synthetic fun <init> (Lcom/fasterxml/jackson/core/type/TypeReference;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
}

public final class org/jetbrains/dokka/TypeReference$Companion {
}

48 changes: 0 additions & 48 deletions runners/cli/src/main/kotlin/cli/JsonMapperForCLI.kt

This file was deleted.

5 changes: 2 additions & 3 deletions runners/cli/src/main/kotlin/cli/main.kt
Expand Up @@ -406,9 +406,9 @@ fun parseLinks(links: List<String>): List<ExternalDocumentationLink> {

fun initializeConfiguration(globalArguments: GlobalArguments): DokkaConfiguration = if (globalArguments.json != null) {
val jsonContent = Paths.get(checkNotNull(globalArguments.json)).toFile().readText()
val globals: GlobalDokkaConfiguration = parseJson(jsonContent)
val globals = GlobalDokkaConfiguration(jsonContent)
val dokkaConfigurationImpl = DokkaConfigurationImpl(jsonContent)
dokkaConfigurationImpl.run {
dokkaConfigurationImpl.apply {
sourceSets.forEach {
it.perPackageOptions.cast<MutableList<DokkaConfiguration.PackageOptions>>().addAll(globals.perPackageOptions ?: emptyList())
}
Expand All @@ -425,7 +425,6 @@ fun initializeConfiguration(globalArguments: GlobalArguments): DokkaConfiguratio
it.externalDocumentationLinks.cast<MutableSet<ExternalDocumentationLink>>().addAll(defaultLinks(it))
}
}
dokkaConfigurationImpl
} else {
globalArguments
}
Expand Down
5 changes: 3 additions & 2 deletions runners/cli/src/test/kotlin/cli/CliTest.kt
Expand Up @@ -3,13 +3,14 @@ package org.jetbrains.dokka
import junit.framework.Assert.assertTrue
import org.junit.Test
import java.lang.IllegalStateException
import java.nio.file.Paths
import kotlin.test.assertEquals

class CliIntegrationTest {

@Test
fun testGlobalArgs() {
val jsonPath = javaClass.getResource("/my-file.json")?.path ?: throw IllegalStateException("No JSON found!")
fun `should apply global settings to all source sets`() {
val jsonPath = Paths.get(javaClass.getResource("/my-file.json")?.toURI() ?: throw IllegalStateException("No JSON found!")).toFile().toString()
val globalArguments = GlobalArguments(arrayOf(jsonPath))

val configuration = initializeConfiguration(globalArguments)
Expand Down

0 comments on commit e7725ec

Please sign in to comment.