Add a function attributes { } to KotlinTarget and KotlinCompilation

Gradle has a function `attributes { ... }` for `Configuration`, so we
can introduce one, too, for uniformity of the DSLs. This will configure
the `val attributes: AttributeContainer` of the `KotlinTarget` and
`KotlinCompilation`.

Issue #KT-27682 Fixed
This commit is contained in:
Sergey Igushkin
2018-11-23 18:24:30 +03:00
parent 5c5c161d59
commit 202c86aafe
10 changed files with 98 additions and 0 deletions
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.gradle.plugin
import groovy.lang.Closure
import org.gradle.api.Named
import org.gradle.api.attributes.AttributeContainer
import org.gradle.api.attributes.HasAttributes
import org.gradle.api.file.ConfigurableFileCollection
import org.gradle.api.file.FileCollection
@@ -52,6 +53,9 @@ interface KotlinCompilation<out T : KotlinCommonOptions> : Named, HasAttributes,
fun kotlinOptions(configure: T.() -> Unit)
fun kotlinOptions(configure: Closure<*>) = kotlinOptions { ConfigureUtil.configure(configure, this) }
fun attributes(configure: AttributeContainer.() -> Unit) = configure(attributes)
fun attributes(configure: Closure<*>) = attributes { ConfigureUtil.configure(configure, this) }
val compileAllTaskName: String
companion object {
@@ -10,6 +10,7 @@ import org.gradle.api.Action
import org.gradle.api.Named
import org.gradle.api.NamedDomainObjectContainer
import org.gradle.api.Project
import org.gradle.api.attributes.AttributeContainer
import org.gradle.api.attributes.HasAttributes
import org.gradle.api.component.SoftwareComponent
import org.gradle.api.internal.component.UsageContext
@@ -47,6 +48,9 @@ interface KotlinTarget : Named, HasAttributes {
fun mavenPublication(action: Closure<Unit>)
fun mavenPublication(action: Action<MavenPublication>)
fun attributes(configure: AttributeContainer.() -> Unit) = configure(attributes)
fun attributes(configure: Closure<*>) = attributes { ConfigureUtil.configure(configure, this) }
val preset: KotlinTargetPreset<out KotlinTarget>?
override fun getName(): String = targetName