11import org.jetbrains.dokka.Platform
22import org.jetbrains.dokka.DokkaConfiguration
3- import org.jetbrains.dokka.gradle.DokkaTask
3+ import org.jetbrains.dokka.gradle.*
44import java.net.URL
55
66plugins {
@@ -13,8 +13,8 @@ evaluationDependsOnChildren()
1313fun pKotlinBig () = project(" kotlin_big" ).ext
1414
1515val 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 " )
1818val kotlin_root: String by pKotlinBig()
1919val kotlin_libs: String by pKotlinBig()
2020val kotlin_native_root = file(" $kotlin_root /kotlin-native" ).absolutePath
@@ -49,7 +49,7 @@ dependencies {
4949}
5050
5151fun 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+
380392fun 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