name.remal.gradle_plugins.dsl.extensions.org.gradle.api.PolymorphicDomainObjectContainer.kt Maven / Gradle / Ivy
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 {
lateinit var name: String
run {
var num = 0
while (true) {
++num
name = "$namePrefix\$$num"
if (null == this.findByName(name)) break
}
}
return create(name, type, configurer)
}
fun PolymorphicDomainObjectContainer.createWithUniqueName(type: Class, configurer: (S) -> Unit = {}): S = createWithUniqueName(type.simpleName, type, configurer)
© 2015 - 2025 Weber Informatics LLC | Privacy Policy