-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
wip: centralize Dokka configuration and plugins into repo tools
- Loading branch information
Showing
6 changed files
with
99 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
33 changes: 33 additions & 0 deletions
33
...ugins/build-support/src/main/kotlin/aws/sdk/kotlin/gradle/dokka/DokkaConventionsPlugin.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
/* | ||
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. | ||
* SPDX-License-Identifier: Apache-2.0 | ||
*/ | ||
package aws.sdk.kotlin.gradle.dokka | ||
|
||
import aws.sdk.kotlin.gradle.dokka.extensions.FilterInternalApis | ||
import aws.sdk.kotlin.gradle.dokka.extensions.NoOpSearchbarDataInstaller | ||
import org.jetbrains.dokka.base.DokkaBase | ||
import org.jetbrains.dokka.plugability.DokkaPlugin | ||
import org.jetbrains.dokka.plugability.DokkaPluginApiPreview | ||
import org.jetbrains.dokka.plugability.PluginApiPreviewAcknowledgement | ||
|
||
class DokkaConventionsPlugin : DokkaPlugin() { | ||
init { | ||
println("${this::class.qualifiedName} loaded!") | ||
} | ||
|
||
val dokkaBase by lazy { plugin<DokkaBase>() } | ||
|
||
val filterInternalApis by extending { | ||
dokkaBase.preMergeDocumentableTransformer providing ::FilterInternalApis | ||
} | ||
|
||
// FIXME Re-enable search once Dokka addresses performance issues | ||
// https://github.com/Kotlin/dokka/issues/2741 | ||
val disableSearch by extending { | ||
dokkaBase.htmlPreprocessors providing ::NoOpSearchbarDataInstaller override dokkaBase.baseSearchbarDataInstaller | ||
} | ||
|
||
@DokkaPluginApiPreview | ||
override fun pluginApiPreviewAcknowledgement() = PluginApiPreviewAcknowledgement | ||
} |
41 changes: 41 additions & 0 deletions
41
...uild-support/src/main/kotlin/aws/sdk/kotlin/gradle/dokka/extensions/FilterInternalApis.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
/* | ||
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. | ||
* SPDX-License-Identifier: Apache-2.0 | ||
*/ | ||
|
||
package aws.sdk.kotlin.gradle.dokka.extensions | ||
|
||
import org.jetbrains.dokka.base.transformers.documentables.SuppressedByConditionDocumentableFilterTransformer | ||
import org.jetbrains.dokka.model.* | ||
import org.jetbrains.dokka.model.properties.WithExtraProperties | ||
import org.jetbrains.dokka.plugability.DokkaContext | ||
|
||
/** | ||
* Filters out anything annotated with `InternalApi` or `InternalSdkApi` | ||
*/ | ||
class FilterInternalApis(context: DokkaContext) : SuppressedByConditionDocumentableFilterTransformer(context) { | ||
override fun shouldBeSuppressed(d: Documentable): Boolean { | ||
val isInternal = when (d) { | ||
is DClass -> d.isInternal() | ||
is DObject -> d.isInternal() | ||
is DTypeAlias -> d.isInternal() | ||
is DFunction -> d.isInternal() | ||
is DProperty -> d.isInternal() | ||
is DEnum -> d.isInternal() | ||
is DEnumEntry -> d.isInternal() | ||
is DTypeParameter -> d.isInternal() | ||
else -> false | ||
} | ||
|
||
if (isInternal) context.logger.warn("Suppressing internal element '${d.name}'") | ||
|
||
return isInternal | ||
} | ||
} | ||
|
||
private val internalAnnotationNames = setOf("InternalApi", "InternalSdkApi") | ||
|
||
private fun <T> T.isInternal() where T : WithExtraProperties<out Documentable> = | ||
extra[Annotations]?.directAnnotations.orEmpty().values.flatten().any { annotation -> | ||
annotation.dri.classNames in internalAnnotationNames | ||
} |
18 changes: 18 additions & 0 deletions
18
...port/src/main/kotlin/aws/sdk/kotlin/gradle/dokka/extensions/NoOpSearchbarDataInstaller.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
/* | ||
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. | ||
* SPDX-License-Identifier: Apache-2.0 | ||
*/ | ||
|
||
package aws.sdk.kotlin.gradle.dokka.extensions | ||
|
||
import org.jetbrains.dokka.base.renderers.html.SearchRecord | ||
import org.jetbrains.dokka.base.renderers.html.SearchbarDataInstaller | ||
import org.jetbrains.dokka.pages.DriResolver | ||
import org.jetbrains.dokka.plugability.DokkaContext | ||
|
||
/** | ||
* Disable the search bar data (pages.json). | ||
*/ | ||
class NoOpSearchbarDataInstaller(context: DokkaContext) : SearchbarDataInstaller(context) { | ||
override fun generatePagesList(pages: List<SignatureWithId>, locationResolver: DriResolver) = listOf<SearchRecord>() | ||
} |
1 change: 1 addition & 0 deletions
1
...-support/src/main/resources/META-INF/services/org.jetbrains.dokka.plugability.DokkaPlugin
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
aws.sdk.kotlin.gradle.dokka.DokkaConventionsPlugin |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters