11plugins {
22 base
3+ alias(libs.plugins.dokka) apply false
34 alias(libs.plugins.kotlin.jvm) apply false
45 alias(libs.plugins.kotlin.compose) apply false
56 alias(libs.plugins.android.library) apply false
@@ -8,6 +9,14 @@ plugins {
89 alias(libs.plugins.ktlint) apply false
910}
1011
12+ val publishableModules = listOf (
13+ " :recorder-annotations" ,
14+ " :recorder-core" ,
15+ " :recorder-ksp" ,
16+ " :recorder-android" ,
17+ " :recorder-gradle-plugin"
18+ )
19+
1120subprojects {
1221 apply (plugin = " org.jlleitschuh.gradle.ktlint" )
1322
@@ -27,14 +36,6 @@ allprojects {
2736 }
2837}
2938
30- val publishableModules = listOf (
31- " :recorder-annotations" ,
32- " :recorder-core" ,
33- " :recorder-ksp" ,
34- " :recorder-android" ,
35- " :recorder-gradle-plugin"
36- )
37-
3839val testableJvmModules = listOf (
3940 " :recorder-annotations" ,
4041 " :recorder-core" ,
@@ -60,3 +61,24 @@ tasks.register("publishRecorderModulesToMavenLocal") {
6061 description = " Publishes all recorder modules to Maven Local"
6162 dependsOn(publishableModules.map { " $it :publishToMavenLocal" })
6263}
64+
65+ tasks.register(" dokkaPublicApi" ) {
66+ group = " documentation"
67+ description = " Generates Dokka HTML docs for published recorder modules"
68+ dependsOn(publishableModules.map { " $it :dokkaGeneratePublicationHtml" })
69+ outputs.dir(layout.buildDirectory.dir(" dokka/public-api" ))
70+ doLast {
71+ val outputRoot = layout.buildDirectory.dir(" dokka/public-api" ).get().asFile
72+ outputRoot.mkdirs()
73+ publishableModules.forEach { modulePath ->
74+ val moduleName = modulePath.removePrefix(" :" )
75+ val moduleDocsDir = project(modulePath).layout.buildDirectory.dir(" dokka/html" ).get().asFile
76+ if (moduleDocsDir.exists()) {
77+ copy {
78+ from(moduleDocsDir)
79+ into(outputRoot.resolve(moduleName))
80+ }
81+ }
82+ }
83+ }
84+ }
0 commit comments