aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKrystianUjma <kujma@virtuslab.com>2019-04-26 16:55:13 +0200
committerKrystianUjma <kujma@virtuslab.com>2019-04-26 16:55:13 +0200
commit529d8ecf02e82fa65a827f50b038c68835c3d0d4 (patch)
tree684c312a02954ed08eee96ac027143053652d588
parent06af978842577ad19639b827cf33c4514347afa4 (diff)
downloaddokka-529d8ecf02e82fa65a827f50b038c68835c3d0d4.tar.gz
dokka-529d8ecf02e82fa65a827f50b038c68835c3d0d4.tar.bz2
dokka-529d8ecf02e82fa65a827f50b038c68835c3d0d4.zip
add multiplatform configuration for maven
-rw-r--r--runners/maven-plugin/src/main/kotlin/DokkaMojo.kt189
1 files changed, 139 insertions, 50 deletions
diff --git a/runners/maven-plugin/src/main/kotlin/DokkaMojo.kt b/runners/maven-plugin/src/main/kotlin/DokkaMojo.kt
index 83ee17d4..8f4cf2c2 100644
--- a/runners/maven-plugin/src/main/kotlin/DokkaMojo.kt
+++ b/runners/maven-plugin/src/main/kotlin/DokkaMojo.kt
@@ -14,15 +14,15 @@ import org.jetbrains.dokka.*
import java.io.File
import java.net.URL
-class SourceLinkMapItem {
- @Parameter(name = "dir", required = true)
- var dir: String = ""
+class SourceLinkMapItem : DokkaConfiguration.SourceLinkDefinition {
+ @Parameter(name = "path", required = true)
+ override var path: String = ""
@Parameter(name = "url", required = true)
- var url: String = ""
+ override var url: String = ""
- @Parameter(name = "urlSuffix")
- var urlSuffix: String? = null
+ @Parameter(name = "lineSuffix")
+ override var lineSuffix: String? = null
}
class ExternalDocumentationLinkBuilder : DokkaConfiguration.ExternalDocumentationLink.Builder() {
@@ -52,6 +52,82 @@ abstract class AbstractDokkaMojo : AbstractMojo() {
override var suppress: Boolean = false
}
+ class Multiplatform : DokkaConfiguration.PassConfiguration {
+ @Parameter(required = true, defaultValue = "\${project.artifactId}")
+ override val moduleName: String = ""
+
+ @Parameter(required = true, defaultValue = "\${project.compileClasspathElements}")
+ override val classpath: List<String> = emptyList()
+
+ @Parameter
+ override val sourceRoots: List<SourceRoot> = emptyList()
+
+ @Parameter
+ override val samples: List<String> = emptyList()
+
+ @Parameter
+ override val includes: List<String> = emptyList()
+
+ @Parameter
+ override val includeNonPublic: Boolean = false
+
+ @Parameter
+ override val includeRootPackage: Boolean = false
+
+ @Parameter
+ override val reportUndocumented: Boolean = true
+ @Parameter
+ override val skipEmptyPackages: Boolean = true
+
+ @Parameter
+ override val skipDeprecated: Boolean = false
+
+ @Parameter(required = false, defaultValue = "6")
+ override val jdkVersion: Int = 6
+
+ @Parameter
+ override val sourceLinks: List<SourceLinkMapItem> = emptyList()
+
+ @Parameter
+ override val perPackageOptions: List<PackageOptions> = emptyList()
+
+ @Parameter
+ override val externalDocumentationLinks: List<DokkaConfiguration.ExternalDocumentationLink> = emptyList()
+
+ @Parameter
+ override val languageVersion: String? = null
+
+ @Parameter
+ override val apiVersion: String? = null
+
+ @Parameter(defaultValue = "false")
+ override val noStdlibLink: Boolean = false
+
+ @Parameter(defaultValue = "false")
+ override val noJdkLink: Boolean = false
+
+ @Parameter
+ override val suppressedFiles: List<String> = emptyList()
+
+ @Parameter
+ override val collectInheritedExtensionsFromLibraries: Boolean = false
+
+ @Parameter
+ override val analysisPlatform: Platform = Platform.DEFAULT
+
+ @Parameter
+ override val targets: List<String> = emptyList()
+
+ @Parameter
+ override val sinceKotlin: String = "1.0"
+ }
+
+ @Parameter
+ var multiplatform: List<Multiplatform> = emptyList()
+
+ @Parameter
+ var configuration: Multiplatform? = null
+
@Parameter(required = true, defaultValue = "\${project.compileSourceRoots}")
var sourceDirectories: List<String> = emptyList()
@@ -87,7 +163,7 @@ abstract class AbstractDokkaMojo : AbstractMojo() {
var reportUndocumented = true
@Parameter
- var impliedPlatforms: List<String> = emptyList()
+ var impliedPlatforms: List<String> = emptyList() //TODO check
@Parameter
var perPackageOptions: List<PackageOptions> = emptyList()
@@ -120,52 +196,65 @@ abstract class AbstractDokkaMojo : AbstractMojo() {
}
sourceLinks.forEach {
- if (it.dir.contains("\\")) {
- throw MojoExecutionException("Incorrect dir property, only Unix based path allowed.")
+ if (it.path.contains("\\")) {
+ throw MojoExecutionException("Incorrect path property, only Unix based path allowed.")
}
}
- val passConfiguration = PassConfigurationImpl(
- classpath = classpath,
- sourceRoots = sourceDirectories.map { SourceRootImpl(it) } + sourceRoots.map { SourceRootImpl(path = it.path) },
- samples = samplesDirs,
- includes = includes,
- collectInheritedExtensionsFromLibraries = false, // TODO: Should we implement this?
- sourceLinks = sourceLinks.map { SourceLinkDefinitionImpl(it.dir, it.url, it.urlSuffix) },
- jdkVersion = jdkVersion,
- skipDeprecated = skipDeprecated,
- skipEmptyPackages = skipEmptyPackages,
- reportUndocumented = reportUndocumented,
- perPackageOptions = perPackageOptions.map {
- PackageOptionsImpl(
- prefix = it.prefix,
- includeNonPublic = it.includeNonPublic,
- reportUndocumented = it.reportUndocumented,
- skipDeprecated = it.skipDeprecated,
- suppress = it.suppress
- )},
- externalDocumentationLinks = externalDocumentationLinks.map { it.build() as ExternalDocumentationLinkImpl },
- noStdlibLink = noStdlibLink,
- noJdkLink = noJdkLink,
- languageVersion = languageVersion,
- apiVersion = apiVersion,
- moduleName = moduleName,
- suppressedFiles = emptyList(), // TODO: Should we implement this?
- sinceKotlin = "1.0", // TODO: Should we implement this?
- analysisPlatform = Platform.DEFAULT, // TODO: Should we implement this?
- targets = emptyList(), // TODO: Should we implement this?
- includeNonPublic = false, // TODO: Should we implement this?
- includeRootPackage = false // TODO: Should we implement this?
- )
-
- val configuration = DokkaConfigurationImpl(
- outputDir = getOutDir(),
- format = getOutFormat(),
- impliedPlatforms = impliedPlatforms,
- cacheRoot = cacheRoot,
- passesConfigurations = listOf(passConfiguration),
- generateIndexPages = false // TODO: Should we implement this?
- )
+// val passConfiguration = PassConfigurationImpl(
+// classpath = classpath,
+// sourceRoots = sourceDirectories.map { SourceRootImpl(it) } + sourceRoots.map { SourceRootImpl(path = it.path) },
+// samples = samplesDirs,
+// includes = includes,
+// collectInheritedExtensionsFromLibraries = false, // TODO: Should we implement this?
+// sourceLinks = sourceLinks.map { SourceLinkDefinitionImpl(it.path, it.url, it.lineSuffix) },
+// jdkVersion = jdkVersion,
+// skipDeprecated = skipDeprecated,
+// skipEmptyPackages = skipEmptyPackages,
+// reportUndocumented = reportUndocumented,
+// perPackageOptions = perPackageOptions.map {
+// PackageOptionsImpl(
+// prefix = it.prefix,
+// includeNonPublic = it.includeNonPublic,
+// reportUndocumented = it.reportUndocumented,
+// skipDeprecated = it.skipDeprecated,
+// suppress = it.suppress
+// )},
+// externalDocumentationLinks = externalDocumentationLinks.map { it.build() as ExternalDocumentationLinkImpl },
+// noStdlibLink = noStdlibLink,
+// noJdkLink = noJdkLink,
+// languageVersion = languageVersion,
+// apiVersion = apiVersion,
+// moduleName = moduleName,
+// suppressedFiles = emptyList(), // TODO: Should we implement this?
+// sinceKotlin = "1.0", // TODO: Should we implement this?
+// analysisPlatform = Platform.DEFAULT, // TODO: Should we implement this?
+// targets = emptyList(), // TODO: Should we implement this?
+// includeNonPublic = false, // TODO: Should we implement this?
+// includeRootPackage = false // TODO: Should we implement this?
+// )
+
+
+ val platforms = impliedPlatforms
+ val cacheRoot = cacheRoot
+
+ val configuration = object : DokkaConfiguration {
+ override val outputDir = getOutDir()
+ override val format = getOutFormat()
+ override val impliedPlatforms = platforms
+ override val cacheRoot = cacheRoot
+ override val passesConfigurations = multiplatform
+ override val generateIndexPages = false // TODO: Should we implement this?
+ }
+
+// val configuration = DokkaConfigurationImpl(
+// outputDir = getOutDir(),
+// format = getOutFormat(),
+// impliedPlatforms = impliedPlatforms,
+// cacheRoot = cacheRoot,
+//// passesConfigurations = listOf(passConfiguration),
+// generateIndexPages = false // TODO: Should we implement this?
+// )
val gen = DokkaGenerator(configuration, MavenDokkaLogger(log))