aboutsummaryrefslogtreecommitdiff
path: root/dokka-runners/dokkatoo/modules/dokkatoo-plugin/src/main/kotlin/distributions/DokkatooConfigurationAttributes.kt
diff options
context:
space:
mode:
Diffstat (limited to 'dokka-runners/dokkatoo/modules/dokkatoo-plugin/src/main/kotlin/distributions/DokkatooConfigurationAttributes.kt')
-rw-r--r--dokka-runners/dokkatoo/modules/dokkatoo-plugin/src/main/kotlin/distributions/DokkatooConfigurationAttributes.kt59
1 files changed, 59 insertions, 0 deletions
diff --git a/dokka-runners/dokkatoo/modules/dokkatoo-plugin/src/main/kotlin/distributions/DokkatooConfigurationAttributes.kt b/dokka-runners/dokkatoo/modules/dokkatoo-plugin/src/main/kotlin/distributions/DokkatooConfigurationAttributes.kt
new file mode 100644
index 00000000..57ca5ef9
--- /dev/null
+++ b/dokka-runners/dokkatoo/modules/dokkatoo-plugin/src/main/kotlin/distributions/DokkatooConfigurationAttributes.kt
@@ -0,0 +1,59 @@
+package org.jetbrains.dokka.dokkatoo.distributions
+
+import org.jetbrains.dokka.dokkatoo.internal.DokkatooInternalApi
+import javax.inject.Inject
+import org.gradle.api.Named
+import org.gradle.api.artifacts.Configuration
+import org.gradle.api.attributes.Attribute
+import org.gradle.api.attributes.Usage
+import org.gradle.api.model.ObjectFactory
+import org.gradle.kotlin.dsl.*
+
+/**
+ * Gradle Configuration Attributes for sharing Dokkatoo files across subprojects.
+ *
+ * These attributes are used to tag [Configuration]s, so files can be shared between subprojects.
+ */
+@DokkatooInternalApi
+abstract class DokkatooConfigurationAttributes
+@Inject
+constructor(
+ objects: ObjectFactory,
+) {
+
+ /** A general attribute for all [Configuration]s that are used by the Dokka Gradle plugin */
+ val dokkatooBaseUsage: DokkatooBaseAttribute = objects.named("dokkatoo")
+
+ /** for [Configuration]s that provide or consume Dokka parameter files */
+ val dokkaParameters: DokkatooCategoryAttribute = objects.named("generator-parameters")
+
+ /** for [Configuration]s that provide or consume Dokka Module files */
+ val dokkaModuleFiles: DokkatooCategoryAttribute = objects.named("module-files")
+// val dokkaModuleSource: DokkatooCategoryAttribute = objects.named("module-source")
+
+ val dokkaGeneratorClasspath: DokkatooCategoryAttribute = objects.named("generator-classpath")
+
+ val dokkaPluginsClasspath: DokkatooCategoryAttribute = objects.named("plugins-classpath")
+
+ @DokkatooInternalApi
+ interface DokkatooBaseAttribute : Usage
+
+ @DokkatooInternalApi
+ interface DokkatooCategoryAttribute : Named
+
+ @DokkatooInternalApi
+ interface DokkaFormatAttribute : Named
+
+ @DokkatooInternalApi
+ companion object {
+ val DOKKATOO_BASE_ATTRIBUTE =
+ Attribute<DokkatooBaseAttribute>("org.jetbrains.dokka.dokkatoo.base")
+ val DOKKATOO_CATEGORY_ATTRIBUTE =
+ Attribute<DokkatooCategoryAttribute>("org.jetbrains.dokka.dokkatoo.category")
+ val DOKKA_FORMAT_ATTRIBUTE =
+ Attribute<DokkaFormatAttribute>("org.jetbrains.dokka.dokkatoo.format")
+
+ private inline fun <reified T> Attribute(name: String): Attribute<T> =
+ Attribute.of(name, T::class.java)
+ }
+}