From 5fb97cf61e9bfdb66d3c1b2df60ff6d33cc1574b Mon Sep 17 00:00:00 2001 From: Zac Sweers Date: Mon, 14 Oct 2024 17:16:00 -0400 Subject: [PATCH] Update to Dokka 2 (#1016) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Instructions from https://kotlinlang.org/docs/dokka-migration.html ✅ ~Blocked on https://github.com/vanniktech/gradle-maven-publish-plugin/issues/854~ --- .github/workflows/ci.yml | 2 +- .github/workflows/publish-docs.yml | 2 +- build.gradle.kts | 53 ++++++++++++++++-------------- deploy_website.sh | 2 +- gradle.properties | 4 +++ gradle/libs.versions.toml | 2 +- release.sh | 2 +- 7 files changed, 38 insertions(+), 29 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b225bfef2..e2e646369 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -81,4 +81,4 @@ jobs: - name: Publish snapshot if: github.repository == 'slackhq/foundry' - run: ./gradlew publish -PmavenCentralUsername=${{ secrets.SONATYPEUSERNAME }} -PmavenCentralPassword=${{ secrets.SONATYPEPASSWORD }} -x dokkaHtml --no-configuration-cache + run: ./gradlew publish -PmavenCentralUsername=${{ secrets.SONATYPEUSERNAME }} -PmavenCentralPassword=${{ secrets.SONATYPEPASSWORD }} diff --git a/.github/workflows/publish-docs.yml b/.github/workflows/publish-docs.yml index 827211b5c..382c78af1 100644 --- a/.github/workflows/publish-docs.yml +++ b/.github/workflows/publish-docs.yml @@ -31,7 +31,7 @@ jobs: uses: gradle/actions/setup-gradle@v4 - name: Build Dokka API docs - run: dokkaHtml --no-configuration-cache + run: :dokkaGenerate - name: Setup Python uses: actions/setup-python@v5 diff --git a/build.gradle.kts b/build.gradle.kts index d56931568..ed63160e2 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -23,10 +23,10 @@ import dev.bmac.gradle.intellij.PluginUploader import dev.bmac.gradle.intellij.UploadPluginTask import io.gitlab.arturbosch.detekt.Detekt import io.gitlab.arturbosch.detekt.extensions.DetektExtension -import java.net.URI import okio.ByteString.Companion.encode import org.gradle.util.internal.VersionNumber -import org.jetbrains.dokka.gradle.DokkaTaskPartial +import org.jetbrains.dokka.gradle.DokkaExtension +import org.jetbrains.dokka.gradle.engine.parameters.VisibilityModifier import org.jetbrains.intellij.platform.gradle.extensions.IntelliJPlatformDependenciesExtension import org.jetbrains.intellij.platform.gradle.extensions.IntelliJPlatformExtension import org.jetbrains.intellij.platform.gradle.tasks.BuildPluginTask @@ -154,9 +154,20 @@ allprojects { } } -tasks.dokkaHtmlMultiModule { - outputDirectory.set(rootDir.resolve("docs/api/0.x")) - includes.from(project.layout.projectDirectory.file("README.md")) +dokka { + dokkaPublications.html { + outputDirectory.set(rootDir.resolve("docs/api/0.x")) + includes.from(project.layout.projectDirectory.file("README.md")) + } +} + +dependencies { + dokka(projects.tools.cli) + dokka(projects.tools.foundryCommon) + dokka(projects.tools.skippy) + dokka(projects.tools.tracing) + dokka(projects.platforms.gradle.foundryGradlePlugin) + dokka(projects.platforms.gradle.agpHandlers.agpHandlerApi) } val kotlinVersion = libs.versions.kotlin.get() @@ -268,43 +279,37 @@ subprojects { pluginManager.withPlugin("com.vanniktech.maven.publish") { apply(plugin = "org.jetbrains.dokka") - tasks.withType().configureEach { - outputDirectory.set(layout.buildDirectory.dir("docs/partial")) + configure { + dokkaPublicationDirectory.set(layout.buildDirectory.dir("dokkaDir")) dokkaSourceSets.configureEach { val readMeProvider = project.layout.projectDirectory.file("README.md") if (readMeProvider.asFile.exists()) { includes.from(readMeProvider) } + documentedVisibilities.add(VisibilityModifier.Public) skipDeprecated.set(true) if (isForGradle) { // Gradle docs - externalDocumentationLink { - url.set( - URI("https://docs.gradle.org/${gradle.gradleVersion}/javadoc/index.html").toURL() - ) + externalDocumentationLinks.register("Gradle") { + packageListUrl("https://docs.gradle.org/${gradle.gradleVersion}/javadoc/element-list") + url("https://docs.gradle.org/${gradle.gradleVersion}/javadoc") } // AGP docs - externalDocumentationLink { + externalDocumentationLinks.register("AGP") { val agpVersionNumber = VersionNumber.parse(libs.versions.agp.get()).baseVersion val simpleApi = "${agpVersionNumber.major}.${agpVersionNumber.minor}" - packageListUrl.set( - URI( - "https://developer.android.com/reference/tools/gradle-api/$simpleApi/package-list" - ) - .toURL() - ) - url.set( - URI("https://developer.android.com/reference/tools/gradle-api/$simpleApi/classes") - .toURL() + packageListUrl( + "https://developer.android.com/reference/tools/gradle-api/$simpleApi/package-list" ) + url("https://developer.android.com/reference/tools/gradle-api/$simpleApi/classes") } } sourceLink { - localDirectory.set(layout.projectDirectory.dir("src").asFile) + localDirectory.set(layout.projectDirectory.dir("src")) val relPath = rootProject.projectDir.toPath().relativize(projectDir.toPath()) - remoteUrl.set( + remoteUrl( providers.gradleProperty("POM_SCM_URL").map { scmUrl -> - URI("$scmUrl/tree/main/$relPath/src").toURL() + "$scmUrl/tree/main/$relPath/src" } ) remoteLineSuffix.set("#L") diff --git a/deploy_website.sh b/deploy_website.sh index 8a4e445b2..9bc6d0964 100755 --- a/deploy_website.sh +++ b/deploy_website.sh @@ -23,7 +23,7 @@ if ! [[ ${local} || ${ci} ]]; then # Move working directory into temp folder cd ${DIR} # Generate the API docs - ./gradlew dokkaHtmlMultiModule --no-configuration-cache + ./gradlew :dokkaGenerate fi # Copy in special files that GitHub wants in the project root. diff --git a/gradle.properties b/gradle.properties index 3d34d1fb2..a491cc624 100644 --- a/gradle.properties +++ b/gradle.properties @@ -29,6 +29,10 @@ kotlin.compiler.preciseCompilationResultsBackup=true moshix.generateProguardRules=false +# Dokka flags +org.jetbrains.dokka.experimental.gradle.pluginMode=V2Enabled +org.jetbrains.dokka.experimental.gradle.pluginMode.noWarn=true + ksp.useKSP2=true # The IJ platform gradle plugin does this silly thing where it checks for updates at configuration-time diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 5833377ee..1646bb381 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -13,7 +13,7 @@ coroutines = "1.9.0" coroutines-ij = "1.9.0" dependencyAnalysisPlugin = "2.1.4" detekt = "1.23.7" -dokka = "1.9.20" +dokka = "2.0.0-Beta" errorproneGradle = "4.0.1" gradle-retry = "1.6.0" graph-assert = "2.7.1" diff --git a/release.sh b/release.sh index 7945c4dee..616a29d94 100755 --- a/release.sh +++ b/release.sh @@ -19,7 +19,7 @@ git commit -am "Prepare for release $NEW_VERSION." git tag -a "$NEW_VERSION" -m "Version $NEW_VERSION" # Publish -./gradlew publish -x dokkaHtml --no-configuration-cache -PSONATYPE_CONNECT_TIMEOUT_SECONDS=300 +./gradlew publish --no-configuration-cache -PSONATYPE_CONNECT_TIMEOUT_SECONDS=300 # Prepare next snapshot echo "Restoring snapshot version $SNAPSHOT_VERSION"