From 0b3a58eb0ac6330b380e36147761b4dbe1c05281 Mon Sep 17 00:00:00 2001 From: Filip ZybaƂa Date: Wed, 25 Mar 2020 13:16:10 +0100 Subject: Fixed maven and CLI runners stdlib links bug --- runners/cli/src/main/kotlin/cli/main.kt | 20 +++++++++++++++++++- runners/maven-plugin/src/main/kotlin/DokkaMojo.kt | 19 ++++++++++++++++++- 2 files changed, 37 insertions(+), 2 deletions(-) diff --git a/runners/cli/src/main/kotlin/cli/main.kt b/runners/cli/src/main/kotlin/cli/main.kt index 644ecee4..731b09d9 100644 --- a/runners/cli/src/main/kotlin/cli/main.kt +++ b/runners/cli/src/main/kotlin/cli/main.kt @@ -192,12 +192,27 @@ class Arguments(val parser: DokkaArgumentsParser) : DokkaConfiguration.PassConfi } object MainKt { + fun defaultLinks(config: DokkaConfiguration.PassConfiguration): List { + val links = mutableListOf() + if (!config.noJdkLink) + links += DokkaConfiguration.ExternalDocumentationLink + .Builder("https://docs.oracle.com/javase/${config.jdkVersion}/docs/api/") + .build() as ExternalDocumentationLinkImpl + + if (!config.noStdlibLink) + links += DokkaConfiguration.ExternalDocumentationLink + .Builder("https://kotlinlang.org/api/latest/jvm/stdlib/") + .build() as ExternalDocumentationLinkImpl + return links + } + fun parseLinks(links: String): List { val (parsedLinks, parsedOfflineLinks) = links.split("^^") .map { it.split("^").map { it.trim() }.filter { it.isNotBlank() } } .filter { it.isNotEmpty() } .partition { it.size == 1 } + return parsedLinks.map { (root) -> ExternalDocumentationLink.Builder(root).build() } + parsedOfflineLinks.map { (root, packageList) -> val rootUrl = URL(root) @@ -256,6 +271,7 @@ object MainKt { val parser = DokkaArgumentsParser(args, parseContext) val configuration = GlobalArguments(parser) + parseContext.cli.singleAction( listOf("-globalPackageOptions"), "List of package passConfiguration in format \"prefix,-deprecated,-privateApi,+warnUndocumented,+suppress;...\" " @@ -291,8 +307,10 @@ object MainKt { it.sourceLinks.toMutableList().addAll(newSourceLinks) } } - parser.parseInto(configuration) + configuration.passesConfigurations.forEach { + it.externalDocumentationLinks.addAll(defaultLinks(it)) + } return configuration } diff --git a/runners/maven-plugin/src/main/kotlin/DokkaMojo.kt b/runners/maven-plugin/src/main/kotlin/DokkaMojo.kt index cfe278ce..49c6fba6 100644 --- a/runners/maven-plugin/src/main/kotlin/DokkaMojo.kt +++ b/runners/maven-plugin/src/main/kotlin/DokkaMojo.kt @@ -185,6 +185,19 @@ abstract class AbstractDokkaMojo : AbstractMojo() { throw MojoExecutionException("Incorrect path property, only Unix based path allowed.") } } + fun defaultLinks(config: PassConfigurationImpl): List { + val links = mutableListOf() + if (!config.noJdkLink) + links += DokkaConfiguration.ExternalDocumentationLink + .Builder("https://docs.oracle.com/javase/${config.jdkVersion}/docs/api/") + .build() as ExternalDocumentationLinkImpl + + if (!config.noStdlibLink) + links += DokkaConfiguration.ExternalDocumentationLink + .Builder("https://kotlinlang.org/api/latest/jvm/stdlib/") + .build() as ExternalDocumentationLinkImpl + return links + } val passConfiguration = PassConfigurationImpl( classpath = classpath, @@ -218,7 +231,11 @@ abstract class AbstractDokkaMojo : AbstractMojo() { targets = targets, includeNonPublic = includeNonPublic, includeRootPackage = includeRootPackage - ) + ).let{ + it.copy( + externalDocumentationLinks = defaultLinks(it) + it.externalDocumentationLinks + ) + } val logger = MavenDokkaLogger(log) -- cgit