aboutsummaryrefslogtreecommitdiff
path: root/runners/cli/src
diff options
context:
space:
mode:
Diffstat (limited to 'runners/cli/src')
-rw-r--r--runners/cli/src/main/kotlin/cli/main.kt28
1 files changed, 27 insertions, 1 deletions
diff --git a/runners/cli/src/main/kotlin/cli/main.kt b/runners/cli/src/main/kotlin/cli/main.kt
index 0d1ff76c..f8a01c38 100644
--- a/runners/cli/src/main/kotlin/cli/main.kt
+++ b/runners/cli/src/main/kotlin/cli/main.kt
@@ -5,6 +5,8 @@ import org.jetbrains.kotlin.cli.common.arguments.ValueDescription
import org.jetbrains.kotlin.cli.common.parser.com.sampullara.cli.Args
import org.jetbrains.kotlin.cli.common.parser.com.sampullara.cli.Argument
import java.io.File
+import java.net.MalformedURLException
+import java.net.URL
import java.net.URLClassLoader
class DokkaArguments {
@@ -51,11 +53,33 @@ class DokkaArguments {
@set:Argument(value = "packageOptions", description = "List of package options in format \"prefix,-deprecated,-privateApi,+warnUndocumented;...\" ")
var packageOptions: String = ""
+
+ @set:Argument(value = "links", description = "")
+ var links: String = ""
}
object MainKt {
+ fun parseLinks(links: String): List<DokkaConfiguration.ExternalDocumentationLink> {
+ 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) -> ExternalDocumentationLinkImpl(root) } +
+ parsedOfflineLinks.map { (root, packageList) ->
+ val rootUrl = URL(root)
+ val packageListUrl =
+ try {
+ URL(packageList)
+ } catch (ex: MalformedURLException) {
+ File(packageList).toURI().toURL()
+ }
+ ExternalDocumentationLinkImpl(rootUrl, packageListUrl)
+ }
+ }
+
@JvmStatic
fun entry(args: Array<String>) {
val arguments = DokkaArguments()
@@ -81,7 +105,9 @@ object MainKt {
skipDeprecated = arguments.nodeprecated,
sourceLinks = sourceLinks,
impliedPlatforms = arguments.impliedPlatforms.split(','),
- perPackageOptions = parsePerPackageOptions(arguments.packageOptions)
+ perPackageOptions = parsePerPackageOptions(arguments.packageOptions),
+ jdkVersion = arguments.jdkVersion,
+ externalDocumentationLinks = parseLinks(arguments.links)
)
val generator = DokkaGenerator(