diff options
Diffstat (limited to 'src/main.kt')
-rw-r--r-- | src/main.kt | 28 |
1 files changed, 25 insertions, 3 deletions
diff --git a/src/main.kt b/src/main.kt index 24853be5..989e8a36 100644 --- a/src/main.kt +++ b/src/main.kt @@ -6,7 +6,6 @@ import org.jetbrains.kotlin.cli.common.messages.* import org.jetbrains.kotlin.cli.common.arguments.* import org.jetbrains.kotlin.utils.PathUtil import java.io.File -import org.jetbrains.kotlin.descriptors.DeclarationDescriptor import org.jetbrains.kotlin.name.FqName class DokkaArguments { @@ -14,6 +13,10 @@ class DokkaArguments { ValueDescription("<path>") public var src: String = "" + Argument(value = "srcLink", description = "Mapping between a source directory and a Web site for browsing the code") + ValueDescription("<path>=<url>[#lineSuffix]") + public var srcLink: String = "" + Argument(value = "include", description = "Markdown files to load (allows many paths separated by the system path separator)") ValueDescription("<path>") public var include: String = "" @@ -40,6 +43,15 @@ class DokkaArguments { } +class SourceLinkDefinition(val path: String, val url: String, val lineSuffix: String?) + +private fun parseSourceLinkDefinition(srcLink: String): SourceLinkDefinition { + val (path, urlAndLine) = srcLink.split('=') + return SourceLinkDefinition(File(path).getAbsolutePath(), + urlAndLine.substringBefore("#"), + urlAndLine.substringAfter("#", "").let { if (it.isEmpty()) null else "#" + it }) +} + public fun main(args: Array<String>) { val arguments = DokkaArguments() val freeArgs: List<String> = Args.parse(arguments, args) ?: listOf() @@ -47,6 +59,15 @@ public fun main(args: Array<String>) { val samples = if (arguments.samples.isNotEmpty()) arguments.samples.split(File.pathSeparatorChar).toList() else listOf() val includes = if (arguments.include.isNotEmpty()) arguments.include.split(File.pathSeparatorChar).toList() else listOf() + val sourceLinks = if (arguments.srcLink.isNotEmpty() && arguments.srcLink.contains("=")) + listOf(parseSourceLinkDefinition(arguments.srcLink)) + else { + if (arguments.srcLink.isNotEmpty()) { + println("Warning: Invalid -srcLink syntax. Expected: <path>=<url>[#lineSuffix]. No source links will be generated.") + } + listOf() + } + val environment = AnalysisEnvironment(MessageCollectorPlainTextToStream.PLAIN_TEXT_TO_SYSTEM_ERR) { addClasspath(PathUtil.getJdkClassesRoots()) // addClasspath(PathUtil.getKotlinPathsForCompiler().getRuntimePath()) @@ -79,7 +100,7 @@ public fun main(args: Array<String>) { } } val fragments = fragmentFiles.map { session.getPackageFragment(it.getPackageFqName()) }.filterNotNull().distinct() - val options = DocumentationOptions() + val options = DocumentationOptions(false, sourceLinks) val documentationBuilder = DocumentationBuilder(session, options) with(documentationBuilder) { @@ -133,4 +154,5 @@ public fun main(args: Array<String>) { println() println("Done.") Disposer.dispose(environment) -}
\ No newline at end of file +} + |