Skip to content

Commit d695b0e

Browse files
ilya-gSpace Team
authored and
Space Team
committed
Setup multi-module docs build task
1 parent 6236a1f commit d695b0e

File tree

1 file changed

+55
-42
lines changed

1 file changed

+55
-42
lines changed

libraries/tools/kotlin-stdlib-docs/build.gradle.kts

Lines changed: 55 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import org.jetbrains.dokka.Platform
22
import org.jetbrains.dokka.DokkaConfiguration
3-
import org.jetbrains.dokka.gradle.DokkaTask
3+
import org.jetbrains.dokka.gradle.*
44
import java.net.URL
55

66
plugins {
@@ -13,8 +13,8 @@ evaluationDependsOnChildren()
1313
fun pKotlinBig() = project("kotlin_big").ext
1414

1515
val outputDir = file(findProperty("docsBuildDir") as String? ?: "$buildDir/doc")
16-
val outputDirLatest = file("$outputDir/latest")
17-
val outputDirPrevious = file("$outputDir/previous")
16+
val inputDirPrevious = file(findProperty("docsPreviousVersionsDir") as String? ?: "$outputDir/previous")
17+
val outputDirPartial = outputDir.resolve("partial")
1818
val kotlin_root: String by pKotlinBig()
1919
val kotlin_libs: String by pKotlinBig()
2020
val kotlin_native_root = file("$kotlin_root/kotlin-native").absolutePath
@@ -49,7 +49,7 @@ dependencies {
4949
}
5050

5151
fun createStdLibVersionedDocTask(version: String, isLatest: Boolean) =
52-
tasks.register<DokkaTask>("kotlin-stdlib_" + version + (if (isLatest) "_latest" else "")) {
52+
tasks.register<DokkaTaskPartial>("kotlin-stdlib_" + version + (if (isLatest) "_latest" else "")) {
5353
dependsOn(prepare)
5454

5555
val kotlin_stdlib_dir = file("$kotlin_root/libraries/stdlib")
@@ -74,21 +74,17 @@ fun createStdLibVersionedDocTask(version: String, isLatest: Boolean) =
7474

7575
moduleName.set("kotlin-stdlib")
7676
val moduleDirName = "kotlin-stdlib"
77+
with(pluginsMapConfiguration) {
78+
put("org.jetbrains.dokka.base.DokkaBase" , """{ "mergeImplicitExpectActualDeclarations": "true", "templatesDir": "$templatesDir" }""")
79+
put("org.jetbrains.dokka.kotlinlang.StdLibConfigurationPlugin", """{ "ignoreCommonBuiltIns": "true" }""")
80+
put("org.jetbrains.dokka.versioning.VersioningPlugin" , """{ "version": "$version" }" }""")
81+
}
7782
if (isLatest) {
78-
outputDirectory.set(outputDirLatest.resolve(moduleDirName))
79-
with(pluginsMapConfiguration) {
80-
put("org.jetbrains.dokka.base.DokkaBase" , """{ "mergeImplicitExpectActualDeclarations": "true", "templatesDir": "$templatesDir" }""")
81-
put("org.jetbrains.dokka.kotlinlang.StdLibConfigurationPlugin", """{ "ignoreCommonBuiltIns": "true" }""")
82-
put("org.jetbrains.dokka.versioning.VersioningPlugin" , """{ "version": "$version", "olderVersionsDir": "${outputDirPrevious.resolve(moduleDirName).invariantSeparatorsPath}" }""")
83-
}
83+
outputDirectory.set(file("$outputDirPartial/latest").resolve(moduleDirName))
8484
} else {
85-
outputDirectory.set(outputDirPrevious.resolve(moduleDirName).resolve(version))
86-
with(pluginsMapConfiguration) {
87-
put("org.jetbrains.dokka.base.DokkaBase" , """{ "mergeImplicitExpectActualDeclarations": "true", "templatesDir": "$templatesDir" }""")
88-
put("org.jetbrains.dokka.kotlinlang.StdLibConfigurationPlugin", """{ "ignoreCommonBuiltIns": "true" }""")
89-
put("org.jetbrains.dokka.kotlinlang.VersionFilterPlugin" , """{ "targetVersion": "$version" }""")
90-
put("org.jetbrains.dokka.versioning.VersioningPlugin" , """{ "version": "$version" }""")
91-
}
85+
outputDirectory.set(file("$outputDirPartial/previous").resolve(moduleDirName).resolve(version))
86+
pluginsMapConfiguration
87+
.put("org.jetbrains.dokka.kotlinlang.VersionFilterPlugin" , """{ "targetVersion": "$version" }""")
9288
}
9389
dokkaSourceSets {
9490
if (version != "1.0" && version != "1.1") { // Common platform since Kotlin 1.2
@@ -224,9 +220,9 @@ fun createStdLibVersionedDocTask(version: String, isLatest: Boolean) =
224220
}
225221
}
226222

227-
fun createKotlinTestVersionedDocTask(version: String, isLatest: Boolean, stdlibDocTask: TaskProvider<DokkaTask>) =
228-
tasks.register<DokkaTask>("kotlin-test_" + version + (if (isLatest) "_latest" else "")) {
229-
dependsOn(prepare, stdlibDocTask)
223+
fun createKotlinTestVersionedDocTask(version: String, isLatest: Boolean) =
224+
tasks.register<DokkaTaskPartial>("kotlin-test_" + version + (if (isLatest) "_latest" else "")) {
225+
dependsOn(prepare)
230226

231227
val kotlinTestIncludeMd = file("$kotlin_root/libraries/kotlin.test/Module.md")
232228

@@ -237,25 +233,20 @@ fun createKotlinTestVersionedDocTask(version: String, isLatest: Boolean, stdlibD
237233
val kotlinTestJsClasspath = fileTree("$kotlin_libs/kotlin-test-js")
238234
val kotlinTestJvmClasspath = fileTree("$kotlin_libs/kotlin-test")
239235

240-
val stdlibPackageList = URL("file:///${stdlibDocTask.get().outputDirectory.get()}/kotlin-stdlib/package-list")
241236
val kotlinLanguageVersion = version
242237

243238
moduleName.set("kotlin-test")
244239

245240
val moduleDirName = "kotlin-test"
241+
with(pluginsMapConfiguration) {
242+
put("org.jetbrains.dokka.base.DokkaBase", """{ "templatesDir": "$templatesDir" }""")
243+
put("org.jetbrains.dokka.versioning.VersioningPlugin", """{ "version": "$version" }""")
244+
}
246245
if (isLatest) {
247-
outputDirectory.set(outputDirLatest.resolve(moduleDirName))
248-
with(pluginsMapConfiguration) {
249-
put("org.jetbrains.dokka.base.DokkaBase" , """{ "mergeImplicitExpectActualDeclarations": "true", "templatesDir": "$templatesDir" }""")
250-
put("org.jetbrains.dokka.versioning.VersioningPlugin" , """{ "version": "$version", "olderVersionsDir": "${outputDirPrevious.resolve(moduleDirName).invariantSeparatorsPath}" }""")
251-
}
246+
outputDirectory.set(file("$outputDirPartial/latest").resolve(moduleDirName))
252247
} else {
253-
outputDirectory.set(outputDirPrevious.resolve(moduleDirName).resolve(version))
254-
with(pluginsMapConfiguration) {
255-
put("org.jetbrains.dokka.base.DokkaBase" , """{ "mergeImplicitExpectActualDeclarations": "true", "templatesDir": "$templatesDir" }""")
256-
put("org.jetbrains.dokka.kotlinlang.VersionFilterPlugin" , """{ "targetVersion": "$version" }""")
257-
put("org.jetbrains.dokka.versioning.VersioningPlugin" , """{ "version": "$version" }""")
258-
}
248+
outputDirectory.set(file("$outputDirPartial/previous").resolve(moduleDirName).resolve(version))
249+
pluginsMapConfiguration.put("org.jetbrains.dokka.kotlinlang.VersionFilterPlugin", """{ "targetVersion": "$version" }""")
259250
}
260251

261252
dokkaSourceSets {
@@ -369,14 +360,35 @@ fun createKotlinTestVersionedDocTask(version: String, isLatest: Boolean, stdlibD
369360
languageVersion.set(kotlinLanguageVersion)
370361
noStdlibLink.set(true)
371362
sourceLinksFromRoot()
372-
externalDocumentationLink {
373-
url.set(URL("https://kotlinlang.org/api/latest/jvm/stdlib/"))
374-
packageListUrl.set(stdlibPackageList)
375-
}
376363
}
377364
}
378365
}
379366

367+
368+
fun createAllLibsVersionedDocTask(version: String, isLatest: Boolean, vararg libTasks: TaskProvider<DokkaTaskPartial>) =
369+
tasks.register<DokkaMultiModuleTask>("all-libs_" + version + (if (isLatest) "_latest" else "")) {
370+
moduleName.set("Kotlin libraries")
371+
plugins.extendsFrom(configurations.dokkaHtmlMultiModulePlugin.get())
372+
runtime.extendsFrom(configurations.dokkaHtmlMultiModuleRuntime.get())
373+
libTasks.forEach { addChildTask(it.name) }
374+
375+
fileLayout.set(DokkaMultiModuleFileLayout { parent, child ->
376+
parent.outputDirectory.get().resolve(child.moduleName.get())
377+
})
378+
379+
val moduleDirName = "all-libs"
380+
val outputDirLatest = file("$outputDir/latest")
381+
val outputDirPrevious = file("$outputDir/previous")
382+
pluginsMapConfiguration.put("org.jetbrains.dokka.base.DokkaBase", """{ "templatesDir": "$templatesDir" }""")
383+
if (isLatest) {
384+
outputDirectory.set(outputDirLatest.resolve(moduleDirName))
385+
pluginsMapConfiguration.put("org.jetbrains.dokka.versioning.VersioningPlugin", """{ "version": "$version", "olderVersionsDir": "${inputDirPrevious.resolve(moduleDirName).invariantSeparatorsPath}" }""")
386+
} else {
387+
outputDirectory.set(outputDirPrevious.resolve(moduleDirName).resolve(version))
388+
pluginsMapConfiguration.put("org.jetbrains.dokka.versioning.VersioningPlugin", """{ "version": "$version" }""")
389+
}
390+
}
391+
380392
fun GradleDokkaSourceSetBuilder.perPackageOption(packageNamePrefix: String, action: Action<in GradlePackageOptionsBuilder>) =
381393
perPackageOption {
382394
matchingRegex.set(Regex.escape(packageNamePrefix) + "(\$|\\..*)")
@@ -401,17 +413,18 @@ gradle.projectsEvaluated {
401413
val buildLatestVersion by tasks.registering
402414

403415
val latestStdlib = createStdLibVersionedDocTask(latestVersion, true)
404-
val latestTest = createKotlinTestVersionedDocTask(latestVersion, true, latestStdlib)
416+
val latestTest = createKotlinTestVersionedDocTask(latestVersion, true)
417+
val latestAll = createAllLibsVersionedDocTask(latestVersion, true, latestStdlib, latestTest)
405418

406-
buildLatestVersion.configure { dependsOn(latestStdlib, latestTest) }
419+
buildLatestVersion.configure { dependsOn(latestStdlib, latestTest, latestAll) }
407420

408421
versions.forEach { version ->
409422
val versionStdlib = createStdLibVersionedDocTask(version, false)
410-
val versionTest = createKotlinTestVersionedDocTask(version, false, versionStdlib)
423+
val versionTest = createKotlinTestVersionedDocTask(version, false)
424+
val versionAll = createAllLibsVersionedDocTask(version, isLatest = false, versionStdlib, versionTest)
411425
if (version != latestVersion) {
412-
latestStdlib.configure { dependsOn(versionStdlib) }
413-
latestTest.configure { dependsOn(versionTest) }
426+
latestAll.configure { dependsOn(versionAll) }
414427
}
415-
buildAllVersions.configure { dependsOn(versionStdlib, versionTest) }
428+
buildAllVersions.configure { dependsOn(versionStdlib, versionTest, versionAll) }
416429
}
417430
}

0 commit comments

Comments
 (0)