Setup multi-module docs build task
This commit is contained in:
committed by
Space Team
parent
6236a1fe64
commit
d695b0eac4
@@ -1,6 +1,6 @@
|
|||||||
import org.jetbrains.dokka.Platform
|
import org.jetbrains.dokka.Platform
|
||||||
import org.jetbrains.dokka.DokkaConfiguration
|
import org.jetbrains.dokka.DokkaConfiguration
|
||||||
import org.jetbrains.dokka.gradle.DokkaTask
|
import org.jetbrains.dokka.gradle.*
|
||||||
import java.net.URL
|
import java.net.URL
|
||||||
|
|
||||||
plugins {
|
plugins {
|
||||||
@@ -13,8 +13,8 @@ evaluationDependsOnChildren()
|
|||||||
fun pKotlinBig() = project("kotlin_big").ext
|
fun pKotlinBig() = project("kotlin_big").ext
|
||||||
|
|
||||||
val outputDir = file(findProperty("docsBuildDir") as String? ?: "$buildDir/doc")
|
val outputDir = file(findProperty("docsBuildDir") as String? ?: "$buildDir/doc")
|
||||||
val outputDirLatest = file("$outputDir/latest")
|
val inputDirPrevious = file(findProperty("docsPreviousVersionsDir") as String? ?: "$outputDir/previous")
|
||||||
val outputDirPrevious = file("$outputDir/previous")
|
val outputDirPartial = outputDir.resolve("partial")
|
||||||
val kotlin_root: String by pKotlinBig()
|
val kotlin_root: String by pKotlinBig()
|
||||||
val kotlin_libs: String by pKotlinBig()
|
val kotlin_libs: String by pKotlinBig()
|
||||||
val kotlin_native_root = file("$kotlin_root/kotlin-native").absolutePath
|
val kotlin_native_root = file("$kotlin_root/kotlin-native").absolutePath
|
||||||
@@ -49,7 +49,7 @@ dependencies {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun createStdLibVersionedDocTask(version: String, isLatest: Boolean) =
|
fun createStdLibVersionedDocTask(version: String, isLatest: Boolean) =
|
||||||
tasks.register<DokkaTask>("kotlin-stdlib_" + version + (if (isLatest) "_latest" else "")) {
|
tasks.register<DokkaTaskPartial>("kotlin-stdlib_" + version + (if (isLatest) "_latest" else "")) {
|
||||||
dependsOn(prepare)
|
dependsOn(prepare)
|
||||||
|
|
||||||
val kotlin_stdlib_dir = file("$kotlin_root/libraries/stdlib")
|
val kotlin_stdlib_dir = file("$kotlin_root/libraries/stdlib")
|
||||||
@@ -74,21 +74,17 @@ fun createStdLibVersionedDocTask(version: String, isLatest: Boolean) =
|
|||||||
|
|
||||||
moduleName.set("kotlin-stdlib")
|
moduleName.set("kotlin-stdlib")
|
||||||
val moduleDirName = "kotlin-stdlib"
|
val moduleDirName = "kotlin-stdlib"
|
||||||
|
with(pluginsMapConfiguration) {
|
||||||
|
put("org.jetbrains.dokka.base.DokkaBase" , """{ "mergeImplicitExpectActualDeclarations": "true", "templatesDir": "$templatesDir" }""")
|
||||||
|
put("org.jetbrains.dokka.kotlinlang.StdLibConfigurationPlugin", """{ "ignoreCommonBuiltIns": "true" }""")
|
||||||
|
put("org.jetbrains.dokka.versioning.VersioningPlugin" , """{ "version": "$version" }" }""")
|
||||||
|
}
|
||||||
if (isLatest) {
|
if (isLatest) {
|
||||||
outputDirectory.set(outputDirLatest.resolve(moduleDirName))
|
outputDirectory.set(file("$outputDirPartial/latest").resolve(moduleDirName))
|
||||||
with(pluginsMapConfiguration) {
|
|
||||||
put("org.jetbrains.dokka.base.DokkaBase" , """{ "mergeImplicitExpectActualDeclarations": "true", "templatesDir": "$templatesDir" }""")
|
|
||||||
put("org.jetbrains.dokka.kotlinlang.StdLibConfigurationPlugin", """{ "ignoreCommonBuiltIns": "true" }""")
|
|
||||||
put("org.jetbrains.dokka.versioning.VersioningPlugin" , """{ "version": "$version", "olderVersionsDir": "${outputDirPrevious.resolve(moduleDirName).invariantSeparatorsPath}" }""")
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
outputDirectory.set(outputDirPrevious.resolve(moduleDirName).resolve(version))
|
outputDirectory.set(file("$outputDirPartial/previous").resolve(moduleDirName).resolve(version))
|
||||||
with(pluginsMapConfiguration) {
|
pluginsMapConfiguration
|
||||||
put("org.jetbrains.dokka.base.DokkaBase" , """{ "mergeImplicitExpectActualDeclarations": "true", "templatesDir": "$templatesDir" }""")
|
.put("org.jetbrains.dokka.kotlinlang.VersionFilterPlugin" , """{ "targetVersion": "$version" }""")
|
||||||
put("org.jetbrains.dokka.kotlinlang.StdLibConfigurationPlugin", """{ "ignoreCommonBuiltIns": "true" }""")
|
|
||||||
put("org.jetbrains.dokka.kotlinlang.VersionFilterPlugin" , """{ "targetVersion": "$version" }""")
|
|
||||||
put("org.jetbrains.dokka.versioning.VersioningPlugin" , """{ "version": "$version" }""")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
dokkaSourceSets {
|
dokkaSourceSets {
|
||||||
if (version != "1.0" && version != "1.1") { // Common platform since Kotlin 1.2
|
if (version != "1.0" && version != "1.1") { // Common platform since Kotlin 1.2
|
||||||
@@ -224,9 +220,9 @@ fun createStdLibVersionedDocTask(version: String, isLatest: Boolean) =
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun createKotlinTestVersionedDocTask(version: String, isLatest: Boolean, stdlibDocTask: TaskProvider<DokkaTask>) =
|
fun createKotlinTestVersionedDocTask(version: String, isLatest: Boolean) =
|
||||||
tasks.register<DokkaTask>("kotlin-test_" + version + (if (isLatest) "_latest" else "")) {
|
tasks.register<DokkaTaskPartial>("kotlin-test_" + version + (if (isLatest) "_latest" else "")) {
|
||||||
dependsOn(prepare, stdlibDocTask)
|
dependsOn(prepare)
|
||||||
|
|
||||||
val kotlinTestIncludeMd = file("$kotlin_root/libraries/kotlin.test/Module.md")
|
val kotlinTestIncludeMd = file("$kotlin_root/libraries/kotlin.test/Module.md")
|
||||||
|
|
||||||
@@ -237,25 +233,20 @@ fun createKotlinTestVersionedDocTask(version: String, isLatest: Boolean, stdlibD
|
|||||||
val kotlinTestJsClasspath = fileTree("$kotlin_libs/kotlin-test-js")
|
val kotlinTestJsClasspath = fileTree("$kotlin_libs/kotlin-test-js")
|
||||||
val kotlinTestJvmClasspath = fileTree("$kotlin_libs/kotlin-test")
|
val kotlinTestJvmClasspath = fileTree("$kotlin_libs/kotlin-test")
|
||||||
|
|
||||||
val stdlibPackageList = URL("file:///${stdlibDocTask.get().outputDirectory.get()}/kotlin-stdlib/package-list")
|
|
||||||
val kotlinLanguageVersion = version
|
val kotlinLanguageVersion = version
|
||||||
|
|
||||||
moduleName.set("kotlin-test")
|
moduleName.set("kotlin-test")
|
||||||
|
|
||||||
val moduleDirName = "kotlin-test"
|
val moduleDirName = "kotlin-test"
|
||||||
|
with(pluginsMapConfiguration) {
|
||||||
|
put("org.jetbrains.dokka.base.DokkaBase", """{ "templatesDir": "$templatesDir" }""")
|
||||||
|
put("org.jetbrains.dokka.versioning.VersioningPlugin", """{ "version": "$version" }""")
|
||||||
|
}
|
||||||
if (isLatest) {
|
if (isLatest) {
|
||||||
outputDirectory.set(outputDirLatest.resolve(moduleDirName))
|
outputDirectory.set(file("$outputDirPartial/latest").resolve(moduleDirName))
|
||||||
with(pluginsMapConfiguration) {
|
|
||||||
put("org.jetbrains.dokka.base.DokkaBase" , """{ "mergeImplicitExpectActualDeclarations": "true", "templatesDir": "$templatesDir" }""")
|
|
||||||
put("org.jetbrains.dokka.versioning.VersioningPlugin" , """{ "version": "$version", "olderVersionsDir": "${outputDirPrevious.resolve(moduleDirName).invariantSeparatorsPath}" }""")
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
outputDirectory.set(outputDirPrevious.resolve(moduleDirName).resolve(version))
|
outputDirectory.set(file("$outputDirPartial/previous").resolve(moduleDirName).resolve(version))
|
||||||
with(pluginsMapConfiguration) {
|
pluginsMapConfiguration.put("org.jetbrains.dokka.kotlinlang.VersionFilterPlugin", """{ "targetVersion": "$version" }""")
|
||||||
put("org.jetbrains.dokka.base.DokkaBase" , """{ "mergeImplicitExpectActualDeclarations": "true", "templatesDir": "$templatesDir" }""")
|
|
||||||
put("org.jetbrains.dokka.kotlinlang.VersionFilterPlugin" , """{ "targetVersion": "$version" }""")
|
|
||||||
put("org.jetbrains.dokka.versioning.VersioningPlugin" , """{ "version": "$version" }""")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
dokkaSourceSets {
|
dokkaSourceSets {
|
||||||
@@ -369,14 +360,35 @@ fun createKotlinTestVersionedDocTask(version: String, isLatest: Boolean, stdlibD
|
|||||||
languageVersion.set(kotlinLanguageVersion)
|
languageVersion.set(kotlinLanguageVersion)
|
||||||
noStdlibLink.set(true)
|
noStdlibLink.set(true)
|
||||||
sourceLinksFromRoot()
|
sourceLinksFromRoot()
|
||||||
externalDocumentationLink {
|
|
||||||
url.set(URL("https://kotlinlang.org/api/latest/jvm/stdlib/"))
|
|
||||||
packageListUrl.set(stdlibPackageList)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
fun createAllLibsVersionedDocTask(version: String, isLatest: Boolean, vararg libTasks: TaskProvider<DokkaTaskPartial>) =
|
||||||
|
tasks.register<DokkaMultiModuleTask>("all-libs_" + version + (if (isLatest) "_latest" else "")) {
|
||||||
|
moduleName.set("Kotlin libraries")
|
||||||
|
plugins.extendsFrom(configurations.dokkaHtmlMultiModulePlugin.get())
|
||||||
|
runtime.extendsFrom(configurations.dokkaHtmlMultiModuleRuntime.get())
|
||||||
|
libTasks.forEach { addChildTask(it.name) }
|
||||||
|
|
||||||
|
fileLayout.set(DokkaMultiModuleFileLayout { parent, child ->
|
||||||
|
parent.outputDirectory.get().resolve(child.moduleName.get())
|
||||||
|
})
|
||||||
|
|
||||||
|
val moduleDirName = "all-libs"
|
||||||
|
val outputDirLatest = file("$outputDir/latest")
|
||||||
|
val outputDirPrevious = file("$outputDir/previous")
|
||||||
|
pluginsMapConfiguration.put("org.jetbrains.dokka.base.DokkaBase", """{ "templatesDir": "$templatesDir" }""")
|
||||||
|
if (isLatest) {
|
||||||
|
outputDirectory.set(outputDirLatest.resolve(moduleDirName))
|
||||||
|
pluginsMapConfiguration.put("org.jetbrains.dokka.versioning.VersioningPlugin", """{ "version": "$version", "olderVersionsDir": "${inputDirPrevious.resolve(moduleDirName).invariantSeparatorsPath}" }""")
|
||||||
|
} else {
|
||||||
|
outputDirectory.set(outputDirPrevious.resolve(moduleDirName).resolve(version))
|
||||||
|
pluginsMapConfiguration.put("org.jetbrains.dokka.versioning.VersioningPlugin", """{ "version": "$version" }""")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fun GradleDokkaSourceSetBuilder.perPackageOption(packageNamePrefix: String, action: Action<in GradlePackageOptionsBuilder>) =
|
fun GradleDokkaSourceSetBuilder.perPackageOption(packageNamePrefix: String, action: Action<in GradlePackageOptionsBuilder>) =
|
||||||
perPackageOption {
|
perPackageOption {
|
||||||
matchingRegex.set(Regex.escape(packageNamePrefix) + "(\$|\\..*)")
|
matchingRegex.set(Regex.escape(packageNamePrefix) + "(\$|\\..*)")
|
||||||
@@ -401,17 +413,18 @@ gradle.projectsEvaluated {
|
|||||||
val buildLatestVersion by tasks.registering
|
val buildLatestVersion by tasks.registering
|
||||||
|
|
||||||
val latestStdlib = createStdLibVersionedDocTask(latestVersion, true)
|
val latestStdlib = createStdLibVersionedDocTask(latestVersion, true)
|
||||||
val latestTest = createKotlinTestVersionedDocTask(latestVersion, true, latestStdlib)
|
val latestTest = createKotlinTestVersionedDocTask(latestVersion, true)
|
||||||
|
val latestAll = createAllLibsVersionedDocTask(latestVersion, true, latestStdlib, latestTest)
|
||||||
|
|
||||||
buildLatestVersion.configure { dependsOn(latestStdlib, latestTest) }
|
buildLatestVersion.configure { dependsOn(latestStdlib, latestTest, latestAll) }
|
||||||
|
|
||||||
versions.forEach { version ->
|
versions.forEach { version ->
|
||||||
val versionStdlib = createStdLibVersionedDocTask(version, false)
|
val versionStdlib = createStdLibVersionedDocTask(version, false)
|
||||||
val versionTest = createKotlinTestVersionedDocTask(version, false, versionStdlib)
|
val versionTest = createKotlinTestVersionedDocTask(version, false)
|
||||||
|
val versionAll = createAllLibsVersionedDocTask(version, isLatest = false, versionStdlib, versionTest)
|
||||||
if (version != latestVersion) {
|
if (version != latestVersion) {
|
||||||
latestStdlib.configure { dependsOn(versionStdlib) }
|
latestAll.configure { dependsOn(versionAll) }
|
||||||
latestTest.configure { dependsOn(versionTest) }
|
|
||||||
}
|
}
|
||||||
buildAllVersions.configure { dependsOn(versionStdlib, versionTest) }
|
buildAllVersions.configure { dependsOn(versionStdlib, versionTest, versionAll) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user