1
1
import org.jetbrains.dokka.Platform
2
2
import org.jetbrains.dokka.DokkaConfiguration
3
- import org.jetbrains.dokka.gradle.DokkaTask
3
+ import org.jetbrains.dokka.gradle.*
4
4
import java.net.URL
5
5
6
6
plugins {
@@ -13,8 +13,8 @@ evaluationDependsOnChildren()
13
13
fun pKotlinBig () = project(" kotlin_big" ).ext
14
14
15
15
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 " )
18
18
val kotlin_root: String by pKotlinBig()
19
19
val kotlin_libs: String by pKotlinBig()
20
20
val kotlin_native_root = file(" $kotlin_root /kotlin-native" ).absolutePath
@@ -49,7 +49,7 @@ dependencies {
49
49
}
50
50
51
51
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 " " )) {
53
53
dependsOn(prepare)
54
54
55
55
val kotlin_stdlib_dir = file(" $kotlin_root /libraries/stdlib" )
@@ -74,21 +74,17 @@ fun createStdLibVersionedDocTask(version: String, isLatest: Boolean) =
74
74
75
75
moduleName.set(" kotlin-stdlib" )
76
76
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
+ }
77
82
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))
84
84
} 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 " }""" )
92
88
}
93
89
dokkaSourceSets {
94
90
if (version != " 1.0" && version != " 1.1" ) { // Common platform since Kotlin 1.2
@@ -224,9 +220,9 @@ fun createStdLibVersionedDocTask(version: String, isLatest: Boolean) =
224
220
}
225
221
}
226
222
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)
230
226
231
227
val kotlinTestIncludeMd = file(" $kotlin_root /libraries/kotlin.test/Module.md" )
232
228
@@ -237,25 +233,20 @@ fun createKotlinTestVersionedDocTask(version: String, isLatest: Boolean, stdlibD
237
233
val kotlinTestJsClasspath = fileTree(" $kotlin_libs /kotlin-test-js" )
238
234
val kotlinTestJvmClasspath = fileTree(" $kotlin_libs /kotlin-test" )
239
235
240
- val stdlibPackageList = URL (" file:///${stdlibDocTask.get().outputDirectory.get()} /kotlin-stdlib/package-list" )
241
236
val kotlinLanguageVersion = version
242
237
243
238
moduleName.set(" kotlin-test" )
244
239
245
240
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
+ }
246
245
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))
252
247
} 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 " }""" )
259
250
}
260
251
261
252
dokkaSourceSets {
@@ -369,14 +360,35 @@ fun createKotlinTestVersionedDocTask(version: String, isLatest: Boolean, stdlibD
369
360
languageVersion.set(kotlinLanguageVersion)
370
361
noStdlibLink.set(true )
371
362
sourceLinksFromRoot()
372
- externalDocumentationLink {
373
- url.set(URL (" https://kotlinlang.org/api/latest/jvm/stdlib/" ))
374
- packageListUrl.set(stdlibPackageList)
375
- }
376
363
}
377
364
}
378
365
}
379
366
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
+
380
392
fun GradleDokkaSourceSetBuilder.perPackageOption (packageNamePrefix : String , action : Action <in GradlePackageOptionsBuilder >) =
381
393
perPackageOption {
382
394
matchingRegex.set(Regex .escape(packageNamePrefix) + " (\$ |\\ ..*)" )
@@ -401,17 +413,18 @@ gradle.projectsEvaluated {
401
413
val buildLatestVersion by tasks.registering
402
414
403
415
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)
405
418
406
- buildLatestVersion.configure { dependsOn(latestStdlib, latestTest) }
419
+ buildLatestVersion.configure { dependsOn(latestStdlib, latestTest, latestAll ) }
407
420
408
421
versions.forEach { version ->
409
422
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)
411
425
if (version != latestVersion) {
412
- latestStdlib.configure { dependsOn(versionStdlib) }
413
- latestTest.configure { dependsOn(versionTest) }
426
+ latestAll.configure { dependsOn(versionAll) }
414
427
}
415
- buildAllVersions.configure { dependsOn(versionStdlib, versionTest) }
428
+ buildAllVersions.configure { dependsOn(versionStdlib, versionTest, versionAll ) }
416
429
}
417
430
}
0 commit comments