diff --git a/.github/workflows/githubpages.yaml b/.github/workflows/githubpages.yaml index 832377a0965..ef6441868c6 100644 --- a/.github/workflows/githubpages.yaml +++ b/.github/workflows/githubpages.yaml @@ -29,7 +29,7 @@ jobs: cache-read-only: ${{ github.ref != 'refs/heads/main' && github.ref != 'refs/heads/arrow-2' }} - name: assemble - run: ./gradlew -Pversion=${{ github.event.release.tag_name }} dokkaHtmlMultiModule -Pgithubpages=true + run: ./gradlew -Pversion=${{ github.event.release.tag_name }} :assembleDocs -Pgithubpages=true - name: Deploy to gh-pages uses: peaceiris/actions-gh-pages@v4 diff --git a/arrow-libs/core/arrow-annotations/build.gradle.kts b/arrow-libs/core/arrow-annotations/build.gradle.kts index 1b9e385f48d..21884f703ee 100644 --- a/arrow-libs/core/arrow-annotations/build.gradle.kts +++ b/arrow-libs/core/arrow-annotations/build.gradle.kts @@ -1,14 +1,13 @@ -@file:Suppress("DSL_SCOPE_VIOLATION") - import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi import org.jetbrains.kotlin.gradle.dsl.KotlinVersion plugins { - id(libs.plugins.kotlin.multiplatform.get().pluginId) + alias(libs.plugins.kotlin.multiplatform) alias(libs.plugins.arrowGradleConfig.kotlin) alias(libs.plugins.publish) alias(libs.plugins.spotless) + `dokka-convention` } spotless { @@ -28,13 +27,7 @@ kotlin { } } - jvm { - tasks.jvmJar { - manifest { - attributes["Automatic-Module-Name"] = "arrow.annotations" - } - } - } + jvm() @OptIn(ExperimentalKotlinGradlePluginApi::class) compilerOptions { @@ -42,3 +35,9 @@ kotlin { (project.rootProject.properties["kotlin_api_version"] as? String)?.also { apiVersion = KotlinVersion.fromVersion(it) } } } + +tasks.jvmJar { + manifest { + attributes["Automatic-Module-Name"] = "arrow.annotations" + } +} diff --git a/arrow-libs/core/arrow-atomic/build.gradle.kts b/arrow-libs/core/arrow-atomic/build.gradle.kts index 445ae20498d..db15054da6c 100644 --- a/arrow-libs/core/arrow-atomic/build.gradle.kts +++ b/arrow-libs/core/arrow-atomic/build.gradle.kts @@ -1,15 +1,14 @@ -@file:Suppress("DSL_SCOPE_VIOLATION") - import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi import org.jetbrains.kotlin.gradle.dsl.KotlinVersion import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { - id(libs.plugins.kotlin.multiplatform.get().pluginId) + alias(libs.plugins.kotlin.multiplatform) alias(libs.plugins.arrowGradleConfig.kotlin) alias(libs.plugins.publish) alias(libs.plugins.kotlinx.kover) alias(libs.plugins.spotless) + `dokka-convention` } spotless { diff --git a/arrow-libs/core/arrow-autoclose/build.gradle.kts b/arrow-libs/core/arrow-autoclose/build.gradle.kts index b42aecd9769..c79939afe78 100644 --- a/arrow-libs/core/arrow-autoclose/build.gradle.kts +++ b/arrow-libs/core/arrow-autoclose/build.gradle.kts @@ -1,15 +1,14 @@ -@file:Suppress("DSL_SCOPE_VIOLATION") - import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi import org.jetbrains.kotlin.gradle.dsl.KotlinVersion import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { - id(libs.plugins.kotlin.multiplatform.get().pluginId) + alias(libs.plugins.kotlin.multiplatform) alias(libs.plugins.arrowGradleConfig.kotlin) alias(libs.plugins.publish) alias(libs.plugins.spotless) + `dokka-convention` } spotless { diff --git a/arrow-libs/core/arrow-cache4k/build.gradle.kts b/arrow-libs/core/arrow-cache4k/build.gradle.kts index f73ae851bd2..befdab98640 100644 --- a/arrow-libs/core/arrow-cache4k/build.gradle.kts +++ b/arrow-libs/core/arrow-cache4k/build.gradle.kts @@ -1,14 +1,12 @@ -@file:Suppress("DSL_SCOPE_VIOLATION") - import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi import org.jetbrains.kotlin.gradle.dsl.KotlinVersion - plugins { // `java-library` - id(libs.plugins.kotlin.multiplatform.get().pluginId) + alias(libs.plugins.kotlin.multiplatform) alias(libs.plugins.publish) alias(libs.plugins.spotless) + `dokka-convention` } apply(from = property("ANIMALSNIFFER_MPP")) diff --git a/arrow-libs/core/arrow-core-high-arity/build.gradle.kts b/arrow-libs/core/arrow-core-high-arity/build.gradle.kts index a6d64bbe79f..acf9d545bd0 100644 --- a/arrow-libs/core/arrow-core-high-arity/build.gradle.kts +++ b/arrow-libs/core/arrow-core-high-arity/build.gradle.kts @@ -1,15 +1,14 @@ -@file:Suppress("DSL_SCOPE_VIOLATION") - import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi import org.jetbrains.kotlin.gradle.dsl.KotlinVersion import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { - id(libs.plugins.kotlin.multiplatform.get().pluginId) + alias(libs.plugins.kotlin.multiplatform) alias(libs.plugins.arrowGradleConfig.kotlin) alias(libs.plugins.publish) alias(libs.plugins.kotlinx.kover) alias(libs.plugins.spotless) + `dokka-convention` } spotless { diff --git a/arrow-libs/core/arrow-core-retrofit/build.gradle.kts b/arrow-libs/core/arrow-core-retrofit/build.gradle.kts index 27346d0ab9a..6e50c329901 100644 --- a/arrow-libs/core/arrow-core-retrofit/build.gradle.kts +++ b/arrow-libs/core/arrow-core-retrofit/build.gradle.kts @@ -1,5 +1,3 @@ -@file:Suppress("DSL_SCOPE_VIOLATION") - import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi import org.jetbrains.kotlin.gradle.dsl.KotlinVersion @@ -11,6 +9,7 @@ plugins { alias(libs.plugins.kotlinx.serialization) // Needed for testing only alias(libs.plugins.kotlinx.kover) alias(libs.plugins.spotless) + `dokka-convention` } spotless { diff --git a/arrow-libs/core/arrow-core-serialization/build.gradle.kts b/arrow-libs/core/arrow-core-serialization/build.gradle.kts index 3b4f18c59e4..b26b3cc1b9e 100644 --- a/arrow-libs/core/arrow-core-serialization/build.gradle.kts +++ b/arrow-libs/core/arrow-core-serialization/build.gradle.kts @@ -1,15 +1,13 @@ -@file:Suppress("DSL_SCOPE_VIOLATION") - import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi import org.jetbrains.kotlin.gradle.dsl.KotlinVersion plugins { - id(libs.plugins.kotlin.multiplatform.get().pluginId) + alias(libs.plugins.kotlin.multiplatform) alias(libs.plugins.arrowGradleConfig.kotlin) - alias(libs.plugins.kotlinx.kover) alias(libs.plugins.spotless) + `dokka-convention` id(libs.plugins.kotlinx.serialization.get().pluginId) } diff --git a/arrow-libs/core/arrow-core/build.gradle.kts b/arrow-libs/core/arrow-core/build.gradle.kts index ca137dabeda..70264edbc1a 100644 --- a/arrow-libs/core/arrow-core/build.gradle.kts +++ b/arrow-libs/core/arrow-core/build.gradle.kts @@ -1,16 +1,15 @@ -@file:Suppress("DSL_SCOPE_VIOLATION") - import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi import org.jetbrains.kotlin.gradle.dsl.KotlinVersion import org.jetbrains.kotlin.gradle.tasks.KotlinCompile import java.time.Duration plugins { - id(libs.plugins.kotlin.multiplatform.get().pluginId) + alias(libs.plugins.kotlin.multiplatform) alias(libs.plugins.arrowGradleConfig.kotlin) alias(libs.plugins.publish) alias(libs.plugins.kotlinx.kover) alias(libs.plugins.spotless) + `dokka-convention` } spotless { diff --git a/arrow-libs/core/arrow-eval/build.gradle.kts b/arrow-libs/core/arrow-eval/build.gradle.kts index 85f4a155243..ab803150fa7 100644 --- a/arrow-libs/core/arrow-eval/build.gradle.kts +++ b/arrow-libs/core/arrow-eval/build.gradle.kts @@ -1,15 +1,13 @@ -@file:Suppress("DSL_SCOPE_VIOLATION") - import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi import org.jetbrains.kotlin.gradle.dsl.KotlinVersion - plugins { - id(libs.plugins.kotlin.multiplatform.get().pluginId) + alias(libs.plugins.kotlin.multiplatform) alias(libs.plugins.arrowGradleConfig.kotlin) alias(libs.plugins.publish) alias(libs.plugins.kotlinx.kover) alias(libs.plugins.spotless) + `dokka-convention` } spotless { diff --git a/arrow-libs/core/arrow-functions/build.gradle.kts b/arrow-libs/core/arrow-functions/build.gradle.kts index baf746a18a0..38cc2cd9b11 100644 --- a/arrow-libs/core/arrow-functions/build.gradle.kts +++ b/arrow-libs/core/arrow-functions/build.gradle.kts @@ -1,15 +1,13 @@ -@file:Suppress("DSL_SCOPE_VIOLATION") - import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi import org.jetbrains.kotlin.gradle.dsl.KotlinVersion - plugins { - id(libs.plugins.kotlin.multiplatform.get().pluginId) + alias(libs.plugins.kotlin.multiplatform) alias(libs.plugins.arrowGradleConfig.kotlin) alias(libs.plugins.publish) alias(libs.plugins.kotlinx.kover) alias(libs.plugins.spotless) + `dokka-convention` } spotless { diff --git a/arrow-libs/fx/arrow-collectors/build.gradle.kts b/arrow-libs/fx/arrow-collectors/build.gradle.kts index cd714dfd748..42ed2aa0b04 100644 --- a/arrow-libs/fx/arrow-collectors/build.gradle.kts +++ b/arrow-libs/fx/arrow-collectors/build.gradle.kts @@ -1,15 +1,14 @@ -@file:Suppress("DSL_SCOPE_VIOLATION") - import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi import org.jetbrains.kotlin.gradle.dsl.KotlinVersion import java.time.Duration plugins { - id(libs.plugins.kotlin.multiplatform.get().pluginId) + alias(libs.plugins.kotlin.multiplatform) alias(libs.plugins.arrowGradleConfig.kotlin) alias(libs.plugins.publish) alias(libs.plugins.spotless) alias(libs.plugins.kotlinx.kover) + `dokka-convention` } apply(from = property("ANIMALSNIFFER_MPP")) diff --git a/arrow-libs/fx/arrow-fx-coroutines/build.gradle.kts b/arrow-libs/fx/arrow-fx-coroutines/build.gradle.kts index 0289ac1dc07..57fe38130fc 100644 --- a/arrow-libs/fx/arrow-fx-coroutines/build.gradle.kts +++ b/arrow-libs/fx/arrow-fx-coroutines/build.gradle.kts @@ -1,16 +1,15 @@ -@file:Suppress("DSL_SCOPE_VIOLATION") - import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi import org.jetbrains.kotlin.gradle.dsl.KotlinVersion import java.time.Duration plugins { - id(libs.plugins.kotlin.multiplatform.get().pluginId) + alias(libs.plugins.kotlin.multiplatform) alias(libs.plugins.arrowGradleConfig.kotlin) alias(libs.plugins.publish) alias(libs.plugins.kotlinx.kover) alias(libs.plugins.spotless) + `dokka-convention` } spotless { diff --git a/arrow-libs/fx/arrow-fx-stm/build.gradle.kts b/arrow-libs/fx/arrow-fx-stm/build.gradle.kts index 6cc4466bf75..4ea36075e96 100644 --- a/arrow-libs/fx/arrow-fx-stm/build.gradle.kts +++ b/arrow-libs/fx/arrow-fx-stm/build.gradle.kts @@ -1,15 +1,14 @@ -@file:Suppress("DSL_SCOPE_VIOLATION") - import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi import org.jetbrains.kotlin.gradle.dsl.KotlinVersion plugins { - id(libs.plugins.kotlin.multiplatform.get().pluginId) + alias(libs.plugins.kotlin.multiplatform) alias(libs.plugins.arrowGradleConfig.kotlin) alias(libs.plugins.publish) alias(libs.plugins.kotlinx.kover) alias(libs.plugins.spotless) + `dokka-convention` } spotless { diff --git a/arrow-libs/optics/arrow-optics-compose/build.gradle.kts b/arrow-libs/optics/arrow-optics-compose/build.gradle.kts index 7fb8dbd8e9c..c0ef7e9c214 100644 --- a/arrow-libs/optics/arrow-optics-compose/build.gradle.kts +++ b/arrow-libs/optics/arrow-optics-compose/build.gradle.kts @@ -1,24 +1,23 @@ -@file:Suppress("DSL_SCOPE_VIOLATION") - import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi +import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl import org.jetbrains.kotlin.gradle.dsl.KotlinVersion -import org.jetbrains.kotlin.gradle.targets.js.dsl.ExperimentalWasmDsl -repositories { - google() - mavenCentral() - maven("https://maven.pkg.jetbrains.space/public/p/compose/dev") -} +//repositories { +// google() +// mavenCentral() +// maven("https://maven.pkg.jetbrains.space/public/p/compose/dev") +//} plugins { - id(libs.plugins.kotlin.multiplatform.get().pluginId) + alias(libs.plugins.kotlin.multiplatform) // alias(libs.plugins.arrowGradleConfig.kotlin) alias(libs.plugins.publish) alias(libs.plugins.spotless) alias(libs.plugins.compose.jetbrains) alias(libs.plugins.compose.compiler) alias(libs.plugins.android.library) + `dokka-convention` } apply(from = property("ANIMALSNIFFER_MPP")) diff --git a/arrow-libs/optics/arrow-optics-ksp-plugin/build.gradle.kts b/arrow-libs/optics/arrow-optics-ksp-plugin/build.gradle.kts index 8eb8eb6cb6c..45c0052320d 100644 --- a/arrow-libs/optics/arrow-optics-ksp-plugin/build.gradle.kts +++ b/arrow-libs/optics/arrow-optics-ksp-plugin/build.gradle.kts @@ -1,5 +1,3 @@ -@file:Suppress("DSL_SCOPE_VIOLATION") - import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi import org.jetbrains.kotlin.gradle.dsl.KotlinVersion diff --git a/arrow-libs/optics/arrow-optics-reflect/build.gradle.kts b/arrow-libs/optics/arrow-optics-reflect/build.gradle.kts index 6f57cda752f..5783f916e16 100644 --- a/arrow-libs/optics/arrow-optics-reflect/build.gradle.kts +++ b/arrow-libs/optics/arrow-optics-reflect/build.gradle.kts @@ -1,5 +1,3 @@ -@file:Suppress("DSL_SCOPE_VIOLATION") - import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi import org.jetbrains.kotlin.gradle.dsl.KotlinVersion @@ -10,6 +8,7 @@ plugins { alias(libs.plugins.publish) alias(libs.plugins.kotlinx.kover) alias(libs.plugins.spotless) + `dokka-convention` } spotless { diff --git a/arrow-libs/optics/arrow-optics/build.gradle.kts b/arrow-libs/optics/arrow-optics/build.gradle.kts index eb419c1654c..a6a22e72423 100644 --- a/arrow-libs/optics/arrow-optics/build.gradle.kts +++ b/arrow-libs/optics/arrow-optics/build.gradle.kts @@ -1,15 +1,14 @@ -@file:Suppress("DSL_SCOPE_VIOLATION") - import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi import org.jetbrains.kotlin.gradle.dsl.KotlinVersion plugins { - id(libs.plugins.kotlin.multiplatform.get().pluginId) + alias(libs.plugins.kotlin.multiplatform) alias(libs.plugins.arrowGradleConfig.kotlin) alias(libs.plugins.publish) alias(libs.plugins.kotlinx.kover) alias(libs.plugins.spotless) + `dokka-convention` } spotless { diff --git a/arrow-libs/resilience/arrow-resilience/build.gradle.kts b/arrow-libs/resilience/arrow-resilience/build.gradle.kts index 4335b6a4f5f..ca632d6d233 100644 --- a/arrow-libs/resilience/arrow-resilience/build.gradle.kts +++ b/arrow-libs/resilience/arrow-resilience/build.gradle.kts @@ -1,15 +1,14 @@ -@file:Suppress("DSL_SCOPE_VIOLATION") - import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi import org.jetbrains.kotlin.gradle.dsl.KotlinVersion plugins { - id(libs.plugins.kotlin.multiplatform.get().pluginId) + alias(libs.plugins.kotlin.multiplatform) alias(libs.plugins.arrowGradleConfig.kotlin) alias(libs.plugins.publish) alias(libs.plugins.kotlinx.kover) alias(libs.plugins.spotless) + `dokka-convention` } spotless { diff --git a/arrow-libs/stack/build.gradle.kts b/arrow-libs/stack/build.gradle.kts index fe20d481610..1c32929151c 100644 --- a/arrow-libs/stack/build.gradle.kts +++ b/arrow-libs/stack/build.gradle.kts @@ -1,9 +1,7 @@ -@file:Suppress("DSL_SCOPE_VIOLATION") - plugins { `java-platform` alias(libs.plugins.publish) - + } group = property("projects.group").toString() diff --git a/build.gradle.kts b/build.gradle.kts index f7fa301b1ec..b8f9216b726 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,5 +1,3 @@ -@file:Suppress("DSL_SCOPE_VIOLATION") - import kotlinx.knit.KnitPluginExtension import kotlinx.validation.ExperimentalBCVApi import org.jetbrains.dokka.gradle.DokkaMultiModuleTask @@ -15,34 +13,40 @@ allprojects { } } -buildscript { - repositories { - mavenCentral() - google() - maven("https://maven.pkg.jetbrains.space/public/p/compose/dev") - } - - dependencies { - classpath(libs.kotlinx.knit) - } -} +//buildscript { +// repositories { +// mavenCentral() +// google() +// maven("https://maven.pkg.jetbrains.space/public/p/compose/dev") +// maven("https://maven.pkg.jetbrains.space/kotlin/p/dokka/dev") +// } +// +// dependencies { +// classpath(libs.kotlinx.knit) +// } +//} + +//allprojects { +// repositories { +// mavenCentral() +// (project.rootProject.properties["kotlin_repo_url"] as? String)?.also { maven(it) } +// google() +// maven("https://maven.pkg.jetbrains.space/public/p/compose/dev") +// maven("https://maven.pkg.jetbrains.space/kotlin/p/dokka/dev") +// } +//} allprojects { - repositories { - mavenCentral() - (project.rootProject.properties["kotlin_repo_url"] as? String)?.also { maven(it) } - google() - maven("https://maven.pkg.jetbrains.space/public/p/compose/dev") - } + group = property("projects.group").toString() } plugins { base alias(libs.plugins.android.library) apply false - alias(libs.plugins.dokka) + `dokka-convention` alias(libs.plugins.animalSniffer) apply false alias(libs.plugins.kotlinx.kover) - alias(libs.plugins.kotlin.multiplatform) apply false +// alias(libs.plugins.kotlin.multiplatform) apply false alias(libs.plugins.kotlinx.serialization) apply false alias(libs.plugins.kotlin.binaryCompatibilityValidator) alias(libs.plugins.spotless) apply false @@ -85,8 +89,26 @@ dependencies { kover(projects.arrowEval) } -allprojects { - group = property("projects.group").toString() +dependencies { + dokka(projects.arrowAnnotations) + dokka(projects.arrowAtomic) + dokka(projects.arrowAutoclose) + dokka(projects.arrowCache4k) + dokka(projects.arrowCollectors) + dokka(projects.arrowCore) + dokka(projects.arrowCoreHighArity) + dokka(projects.arrowCoreRetrofit) + dokka(projects.arrowCoreSerialization) + dokka(projects.arrowEval) + dokka(projects.arrowFunctions) + dokka(projects.arrowFxCoroutines) + dokka(projects.arrowFxStm) + dokka(projects.arrowOptics) + dokka(projects.arrowOpticsCompose) + //dokka(projects.arrowOpticsKspPlugin) + dokka(projects.arrowOpticsReflect) + dokka(projects.arrowResilience) + //dokka(projects.arrowStack) } private val kotlinXUpstream = @@ -97,50 +119,43 @@ private val kotlinXUpstream = "arrow-collectors" ) -subprojects { - tasks.withType().configureEach { - extensions.findByType()?.sourceSets?.forEach { kotlinSourceSet -> - dokkaSourceSets.named(kotlinSourceSet.name) { - perPackageOption { - matchingRegex.set(".*\\.internal.*") - suppress.set(true) - } - if (project.name in kotlinXUpstream) externalDocumentationLink("https://kotlinlang.org/api/kotlinx.coroutines/") - skipDeprecated.set(true) - reportUndocumented.set(false) - - kotlinSourceSet.kotlin.srcDirs.filter { it.exists() }.forEach { srcDir -> - sourceLink { - localDirectory.set(srcDir) -remoteUrl.set(uri("https://github.com/arrow-kt/arrow/blob/main/${srcDir.relativeTo(rootProject.rootDir)}").toURL()) - remoteLineSuffix.set("#L") - } - } - } - } - } +//subprojects { +// tasks.withType().configureEach { +// extensions.findByType()?.sourceSets?.forEach { kotlinSourceSet -> +// dokkaSourceSets.named(kotlinSourceSet.name) { +// perPackageOption { +// matchingRegex.set(".*\\.internal.*") +// suppress.set(true) +// } +// if (project.name in kotlinXUpstream) externalDocumentationLink("https://kotlinlang.org/api/kotlinx.coroutines/") +// skipDeprecated.set(true) +// reportUndocumented.set(false) +// +// kotlinSourceSet.kotlin.srcDirs.filter { it.exists() }.forEach { srcDir -> +// sourceLink { +// localDirectory.set(srcDir) +//remoteUrl.set(uri("https://github.com/arrow-kt/arrow/blob/main/${srcDir.relativeTo(rootProject.rootDir)}").toURL()) +// remoteLineSuffix.set("#L") +// } +// } +// } +// } +// } +//} + +dokka { + //dokkaPublicationDirectory.set(file("docs")) + moduleName.set("Arrow") } -tasks { - val undocumentedProjects = - listOf(project(":arrow-optics-ksp-plugin")) - - val copyCNameFile = register("copyCNameFile") { - from(layout.projectDirectory.dir("static").file("CNAME")) - into(layout.projectDirectory.dir("docs")) - } - - dokkaHtmlMultiModule { - dependsOn(copyCNameFile) - removeChildTasks(undocumentedProjects) - } - - getByName("knitPrepare").dependsOn(getTasksByName("dokka", true)) +val assembleDocs by tasks.registering(Sync::class) { + from(tasks.dokkaGeneratePublicationHtml) + from(layout.projectDirectory.dir("static").file("CNAME")) + into(layout.projectDirectory.dir("docs")) +} - withType().configureEach { - outputDirectory.set(file("docs")) - moduleName.set("Arrow") - } +tasks.knitPrepare { + dependsOn(tasks.dokkaGenerate) } apiValidation { diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts new file mode 100644 index 00000000000..83dbd616549 --- /dev/null +++ b/buildSrc/build.gradle.kts @@ -0,0 +1,9 @@ +plugins { + `kotlin-dsl` +} + +dependencies { + implementation("org.jetbrains.dokka:dokka-gradle-plugin:2.0.20+") + implementation(libs.kotlin.gradlePlugin) + implementation(libs.android.library.gradlePlugin) +} diff --git a/buildSrc/settings.gradle.kts b/buildSrc/settings.gradle.kts new file mode 100644 index 00000000000..57d93a84957 --- /dev/null +++ b/buildSrc/settings.gradle.kts @@ -0,0 +1,28 @@ +rootProject.name = "buildSrc" + +pluginManagement { + @Suppress("LocalVariableName") val kotlin_repo_url: String? by settings + repositories { + gradlePluginPortal() + mavenCentral() + } +} + +dependencyResolutionManagement { + val kotlin_repo_url: String? by settings + repositories { + kotlin_repo_url?.also { maven(it) } + mavenCentral() + gradlePluginPortal() + maven("https://maven.pkg.jetbrains.space/kotlin/p/dokka/dev") { + name = "JetBrains Dokka Dev" + } + google() + } + + versionCatalogs { + create("libs") { + from(files("../gradle/libs.versions.toml")) + } + } +} diff --git a/buildSrc/src/main/kotlin/dokka-convention.gradle.kts b/buildSrc/src/main/kotlin/dokka-convention.gradle.kts new file mode 100644 index 00000000000..02dc3577250 --- /dev/null +++ b/buildSrc/src/main/kotlin/dokka-convention.gradle.kts @@ -0,0 +1,14 @@ +plugins { + id("org.jetbrains.dokka") +} + +dokka { + dokkaGeneratorIsolation = ClassLoaderIsolation() +// dokkaGeneratorIsolation = ProcessIsolation { +// jvmArgs = listOf( +// "-Xmx6G", +// //"-XX:+UseParallelGC", +// //"-XX:MaxMetaspaceSize=1g", +// ) +// } +} diff --git a/gradle.properties b/gradle.properties index b427106fc2d..394cbab8c5b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,6 +4,8 @@ projects.version=2.0.0-SNAPSHOT enable_wasm=true +org.jetbrains.dokka.experimental.gradle.pluginMode=V2Enabled + # Pomfile definitions #RELEASE_SIGNING_ENABLED=true @@ -23,8 +25,11 @@ POM_SCM_CONNECTION=scm:git:git://github.com/arrow-kt/arrow.git POM_SCM_DEV_CONNECTION=scm:git:ssh://git@github.com/arrow-kt/arrow.git # Gradle options -org.gradle.jvmargs=-Xmx4g +org.gradle.jvmargs=-Dfile.encoding=UTF-8 -Xmx4g org.gradle.parallel=true +org.gradle.caching=true +org.gradle.configuration-cache-problems=warn +org.gradle.configuration-cache=true # To disable publishing of sha-512 checksums for maven-metadata.xml files systemProp.org.gradle.internal.publish.checksums.insecure=true diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index d0204b4e634..0a75f70314b 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -3,7 +3,7 @@ animalSniffer = "1.7.1" arrowGradleConfig = "0.12.0-rc.24" coroutines = "1.9.0" classgraph = "4.8.176" -dokka = "1.9.20" +dokka = "2.0.20-dev-362" kotest = "5.9.1" kover = "0.8.3" kotlin = "2.0.20" @@ -21,7 +21,7 @@ composePlugin = "1.6.11" agp = "8.6.1" android-compileSdk = "34" cache4k = "0.13.0" -publish="0.29.0" +publish = "0.29.0" [libraries] coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "coroutines" } @@ -48,15 +48,19 @@ kotlinCompileTesting = { module = "dev.zacsweers.kctfork:core", version.ref = "k kotlinCompileTestingKsp = { module = "dev.zacsweers.kctfork:ksp", version.ref = "kotlinCompileTesting" } cache4k = { module = "io.github.reactivecircus.cache4k:cache4k", version.ref = "cache4k" } +kotlin-gradlePlugin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" } +android-library-gradlePlugin = { module = "com.android.library:com.android.library.gradle.plugin", version.ref = "agp"} + [plugins] animalSniffer = { id = "ru.vyarus.animalsniffer", version.ref = "animalSniffer" } arrowGradleConfig-formatter = { id = "io.arrow-kt.arrow-gradle-config-formatter", version.ref = "arrowGradleConfig" } arrowGradleConfig-kotlin = { id = "io.arrow-kt.arrow-gradle-config-kotlin", version.ref = "arrowGradleConfig" } arrowGradleConfig-publish = { id = "io.arrow-kt.arrow-gradle-config-publish", version.ref = "arrowGradleConfig" } -publish = { id = "com.vanniktech.maven.publish", version.ref="publish" } +publish = { id = "com.vanniktech.maven.publish", version.ref = "publish" } dokka = { id = "org.jetbrains.dokka", version.ref = "dokka" } kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } -kotlin-multiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" } +kotlin-multiplatform = { id = "org.jetbrains.kotlin.multiplatform" } +#kotlin-multiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" } kotlin-binaryCompatibilityValidator = { id = "org.jetbrains.kotlinx.binary-compatibility-validator", version.ref = "kotlinBinaryCompatibilityValidator" } kotlinx-knit = { id = "org.jetbrains.kotlinx.knit", version.ref = "knit" } kotlinx-kover = { id = "org.jetbrains.kotlinx.kover", version.ref = "kover" } @@ -65,4 +69,4 @@ ksp = { id = "com.google.devtools.ksp", version.ref = "kspVersion" } spotless = { id = "com.diffplug.spotless", version.ref = "spotlessVersion" } compose-jetbrains = { id = "org.jetbrains.compose", version.ref = "composePlugin" } compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } -android-library = { id = "com.android.library", version.ref = "agp" } +android-library = { id = "com.android.library" } diff --git a/settings.gradle.kts b/settings.gradle.kts index 8500aca8674..7470fe2bdd9 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,4 +1,6 @@ -@file:Suppress("LocalVariableName") +@file:Suppress("LocalVariableName", "UnstableApiUsage") + +import org.gradle.api.initialization.resolve.RepositoriesMode.PREFER_SETTINGS enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS") @@ -7,18 +9,23 @@ rootProject.name = "arrow" pluginManagement { @Suppress("LocalVariableName") val kotlin_repo_url: String? by settings repositories { - gradlePluginPortal() mavenCentral() - mavenLocal() - kotlin_repo_url?.also { maven(it) } + //mavenLocal() google() - maven("https://maven.pkg.jetbrains.space/public/p/compose/dev") + gradlePluginPortal() + kotlin_repo_url?.also { maven(it) { name = "KotlinRepo" } } + maven("https://maven.pkg.jetbrains.space/public/p/compose/dev") { + name = "JetBrains Compose Dev" + } + maven("https://maven.pkg.jetbrains.space/kotlin/p/dokka/dev") { + name = "JetBrains Dokka Dev" + } } } plugins { id("com.gradle.develocity") version "3.18.1" - id("org.gradle.toolchains.foojay-resolver-convention") version("0.8.0") + id("org.gradle.toolchains.foojay-resolver-convention") version ("0.8.0") } val kotlin_repo_url: String? by settings @@ -27,11 +34,16 @@ val ksp_version: String? by settings val compose_version: String? by settings dependencyResolutionManagement { + repositoriesMode = PREFER_SETTINGS repositories { mavenCentral() + //mavenLocal() + google() gradlePluginPortal() - mavenLocal() - kotlin_repo_url?.also { maven(it) } + kotlin_repo_url?.also { maven(it) { name = "KotlinRepo" } } + maven("https://maven.pkg.jetbrains.space/kotlin/p/dokka/dev") { + name = "JetBrains Dokka Dev" + } } versionCatalogs { create("libs") {