From a6a259f5ea05a3161918b635ce13c0ca4078d6db Mon Sep 17 00:00:00 2001 From: Claudemirovsky <63046606+Claudemirovsky@users.noreply.github.com> Date: Wed, 21 Feb 2024 06:17:38 -0300 Subject: [PATCH] refactor: Migrate to Dokkatoo (#10) * refactor: Migrate to Dokkatoo * feat(docs): Show functions/classes source --- .github/workflows/docs.yaml | 4 +- build.gradle.kts | 2 +- gradle/libs.versions.toml | 6 +-- library/build.gradle.kts | 82 +++++++++++++++++++++++-------------- 4 files changed, 58 insertions(+), 36 deletions(-) diff --git a/.github/workflows/docs.yaml b/.github/workflows/docs.yaml index ab4574d..0c709dc 100644 --- a/.github/workflows/docs.yaml +++ b/.github/workflows/docs.yaml @@ -24,10 +24,10 @@ jobs: distribution: zulu - name: Build documentation - run: ./gradlew :library:dokkaHtml + run: ./gradlew :library:dokkatooGeneratePublicationHtml - name: Publish documentation uses: JamesIves/github-pages-deploy-action@releases/v4 with: BRANCH: gh-pages - FOLDER: library/build/docs + FOLDER: library/build/docs/html diff --git a/build.gradle.kts b/build.gradle.kts index ca3d3ee..d446711 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -3,7 +3,7 @@ plugins { alias(libs.plugins.android.library) apply false alias(libs.plugins.kotlin.android) apply false - alias(libs.plugins.dokka) apply false + alias(libs.plugins.dokkatoo) apply false } tasks.register("clean") { diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index f090df4..858707a 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,9 +1,9 @@ [versions] -agp_version = "8.2.0" +agp_version = "8.2.1" coroutines_version = "1.7.1" kotlin_version = "1.9.21" serialization_version = "1.5.1" -dokka_version = "1.9.10" +dokkatoo_version = "2.1.0" [libraries] coroutines = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "coroutines_version" } @@ -19,5 +19,5 @@ rxjava = { module = "io.reactivex:rxjava", version = "1.3.8" } [plugins] android-library = { id = "com.android.library", version.ref = "agp_version" } -dokka = { id = "org.jetbrains.dokka", version.ref = "dokka_version" } +dokkatoo = { id = "dev.adamko.dokkatoo", version.ref = "dokkatoo_version" } kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin_version" } diff --git a/library/build.gradle.kts b/library/build.gradle.kts index 0854091..88713d9 100644 --- a/library/build.gradle.kts +++ b/library/build.gradle.kts @@ -1,12 +1,11 @@ -import java.net.URL -import org.jetbrains.dokka.DokkaConfiguration.Visibility -import org.jetbrains.dokka.gradle.DokkaTask +import dev.adamko.dokkatoo.dokka.parameters.KotlinPlatform +import dev.adamko.dokkatoo.dokka.parameters.VisibilityModifier plugins { alias(libs.plugins.android.library) alias(libs.plugins.kotlin.android) `maven-publish` - alias(libs.plugins.dokka) + alias(libs.plugins.dokkatoo) } val ver = "14" @@ -49,40 +48,63 @@ dependencies { compileOnly(libs.kotlin.json.okio) } -tasks.withType().configureEach { - dokkaSourceSets { - named("main") { - moduleName.set("extensions-lib") - moduleVersion.set(ver) - outputDirectory.set(file("build/docs/")) - // Speedup doc generation - // offlineMode.set(true) - includes.from("Module.md") - - perPackageOption { - matchingRegex.set("android.content") - suppress.set(true) - } +dokkatoo { + moduleName.set("extensions-lib") + moduleVersion.set(ver) + dokkatooPublicationDirectory.set(layout.buildDirectory.dir("docs")) + dokkatooSourceSets.main { + includes.from("Module.md") + + // Temporary workaround for https://github.com/Kotlin/dokka/issues/2876. + analysisPlatform.set(KotlinPlatform.JVM) + + perPackageOption { + matchingRegex.set("android.content") + suppress.set(true) + } - documentedVisibilities.set( - setOf(Visibility.PUBLIC, Visibility.PROTECTED) - ) + documentedVisibilities(VisibilityModifier.PUBLIC, VisibilityModifier.PROTECTED) - // Note: this will show up a bruhzillion of warnings due to - // https://github.com/Kotlin/dokka/issues/3120 - externalDocumentationLink { - url.set(URL("https://square.github.io/okhttp/5.x/")) + externalDocumentationLinks { + create("okhttp5") { + url("https://square.github.io/okhttp/5.x/") } - externalDocumentationLink { - url.set(URL("https://jsoup.org/apidocs/")) - packageListUrl.set(URL("https://jsoup.org/apidocs/element-list")) + create("jsoup") { + url("https://jsoup.org/apidocs/") + packageListUrl("https://jsoup.org/apidocs/element-list") } - externalDocumentationLink { - url.set(URL("https://reactivex.io/RxJava/1.x/javadoc/")) + create("rxjava") { + url("https://reactivex.io/RxJava/1.x/javadoc/") } } + + val packageRoot = projectDir.resolve("src/main/java/eu/kanade/tachiyomi/") + sourceLink { + localDirectory.set(packageRoot.resolve("util/JsonExtensions.kt")) + remoteUrl("https://github.com/aniyomiorg/extensions-lib/tree/main/library/src/main/java/eu/kanade/tachiyomi/util/JsonExtensions.kt") + remoteLineSuffix.set("#L") + } + + sourceLink { + localDirectory.set(packageRoot.resolve("util/CoroutinesExtensions.kt")) + remoteUrl("https://github.com/aniyomiorg/extensions-lib/tree/main/library/src/main/java/eu/kanade/tachiyomi/util/CoroutinesExtensions.kt") + remoteLineSuffix.set("#L") + } + + sourceLink { + localDirectory.set(packageRoot.resolve("animesource/")) + remoteUrl("https://github.com/aniyomiorg/aniyomi/tree/master/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/animesource/") + // The line number is wrong, so we're not going to highlight it. + remoteLineSuffix.set("#") + } + + sourceLink { + localDirectory.set(packageRoot.resolve("network/")) + remoteUrl("https://github.com/aniyomiorg/aniyomi/tree/master/core/src/main/java/eu/kanade/tachiyomi/network/") + remoteLineSuffix.set("#") // Same as before. + } } }