diff options
Diffstat (limited to 'runners/cli/src/main')
-rw-r--r-- | runners/cli/src/main/kotlin/cli/main.kt | 28 |
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( |