name.remal.gradle_plugins.dsl.extensions.org.gradle.api.PolymorphicDomainObjectContainer.kt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of gradle-plugins-kotlin-dsl Show documentation
Show all versions of gradle-plugins-kotlin-dsl Show documentation
Remal Gradle plugins: gradle-plugins-kotlin-dsl
package name.remal.gradle_plugins.dsl.extensions
import org.gradle.api.PolymorphicDomainObjectContainer
fun PolymorphicDomainObjectContainer.getOrCreate(name: String, configurer: (T) -> Unit = {}): T {
return findByName(name) ?: create(name, configurer)
}
fun PolymorphicDomainObjectContainer.getOrCreate(name: String, type: Class, configurer: (S) -> Unit = {}): T {
return findByName(name) ?: create(name, type, configurer)
}
fun PolymorphicDomainObjectContainer.createWithUniqueName(namePrefix: String, type: Class, configurer: (S) -> Unit = {}): S {
removeDefaultObjects()
var num = 0
while (true) {
++num
val nameWithSuffix = "$namePrefix\$$num"
if (nameWithSuffix !in this) {
return create(nameWithSuffix, type, configurer)
}
}
}
fun PolymorphicDomainObjectContainer.createWithUniqueName(type: Class, configurer: (S) -> Unit = {}): S = createWithUniqueName(type.simpleName, type, configurer)
fun PolymorphicDomainObjectContainer.createWithOptionalUniqueSuffix(name: String, type: Class, configurer: (S) -> Unit = {}): S {
removeDefaultObjects()
if (name !in this) {
return create(name, type, configurer)
}
var num = 0
while (true) {
++num
val nameWithSuffix = "$name\$$num"
if (nameWithSuffix !in this) {
return create(nameWithSuffix, type, configurer)
}
}
}