[Gradle, JS] Extract Binary Container from Native
This commit is contained in:
+28
@@ -0,0 +1,28 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||||
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jetbrains.kotlin.gradle.plugin.mpp
|
||||||
|
|
||||||
|
import groovy.lang.Closure
|
||||||
|
import org.gradle.api.DomainObjectSet
|
||||||
|
import org.gradle.api.Project
|
||||||
|
import org.gradle.util.ConfigureUtil
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
|
||||||
|
|
||||||
|
abstract class KotlinBinaryContainer<T : KotlinCompilation<*>, R : DomainObjectSet<*>>(
|
||||||
|
project: Project,
|
||||||
|
platformType: KotlinPlatformType
|
||||||
|
) : KotlinOnlyTarget<T>(project, platformType) {
|
||||||
|
abstract val binaries: R
|
||||||
|
|
||||||
|
fun binaries(configure: R.() -> Unit) {
|
||||||
|
binaries.configure()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun binaries(configure: Closure<*>) {
|
||||||
|
ConfigureUtil.configure(configure, binaries)
|
||||||
|
}
|
||||||
|
}
|
||||||
+5
-12
@@ -6,11 +6,9 @@
|
|||||||
@file:Suppress("PackageDirectoryMismatch") // Old package for compatibility
|
@file:Suppress("PackageDirectoryMismatch") // Old package for compatibility
|
||||||
package org.jetbrains.kotlin.gradle.plugin.mpp
|
package org.jetbrains.kotlin.gradle.plugin.mpp
|
||||||
|
|
||||||
import groovy.lang.Closure
|
|
||||||
import org.gradle.api.NamedDomainObjectContainer
|
import org.gradle.api.NamedDomainObjectContainer
|
||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
import org.gradle.api.attributes.Attribute
|
import org.gradle.api.attributes.Attribute
|
||||||
import org.gradle.util.ConfigureUtil
|
|
||||||
import org.gradle.util.WrapUtil
|
import org.gradle.util.WrapUtil
|
||||||
import org.jetbrains.kotlin.gradle.dsl.KotlinNativeBinaryContainer
|
import org.jetbrains.kotlin.gradle.dsl.KotlinNativeBinaryContainer
|
||||||
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
|
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
|
||||||
@@ -25,24 +23,19 @@ import javax.inject.Inject
|
|||||||
open class KotlinNativeTarget @Inject constructor(
|
open class KotlinNativeTarget @Inject constructor(
|
||||||
project: Project,
|
project: Project,
|
||||||
val konanTarget: KonanTarget
|
val konanTarget: KonanTarget
|
||||||
) : KotlinOnlyTarget<KotlinNativeCompilation>(project, KotlinPlatformType.native) {
|
) : KotlinBinaryContainer<KotlinNativeCompilation, KotlinNativeBinaryContainer>(
|
||||||
|
project,
|
||||||
|
KotlinPlatformType.native
|
||||||
|
) {
|
||||||
|
|
||||||
init {
|
init {
|
||||||
attributes.attribute(konanTargetAttribute, konanTarget.name)
|
attributes.attribute(konanTargetAttribute, konanTarget.name)
|
||||||
}
|
}
|
||||||
|
|
||||||
val binaries =
|
override val binaries =
|
||||||
// Use newInstance to allow accessing binaries by their names in Groovy using the extension mechanism.
|
// Use newInstance to allow accessing binaries by their names in Groovy using the extension mechanism.
|
||||||
project.objects.newInstance(KotlinNativeBinaryContainer::class.java, this, WrapUtil.toDomainObjectSet(NativeBinary::class.java))
|
project.objects.newInstance(KotlinNativeBinaryContainer::class.java, this, WrapUtil.toDomainObjectSet(NativeBinary::class.java))
|
||||||
|
|
||||||
fun binaries(configure: KotlinNativeBinaryContainer.() -> Unit) {
|
|
||||||
binaries.configure()
|
|
||||||
}
|
|
||||||
|
|
||||||
fun binaries(configure: Closure<*>) {
|
|
||||||
ConfigureUtil.configure(configure, binaries)
|
|
||||||
}
|
|
||||||
|
|
||||||
override val artifactsTaskName: String
|
override val artifactsTaskName: String
|
||||||
get() = disambiguateName("binaries")
|
get() = disambiguateName("binaries")
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user