This message was deleted.
# community-support
s
This message was deleted.
1
a
it's possible to add named extensions to types by extending ExtensionAware
Copy code
interface FooExtension: ExtensionAware {
  val property1: String
  
  interface Bar: ExtensionAware {
    val property2: String

    interface Buz: ExtensionAware {
      val property3: Boolean
      val property4: String
    }
  }
}

val fooExtension = extensions.create<FooExtension>("foo")
val barExtension = fooExtension.extensions.create<FooExtension.Bar>("bar")
val buzExtension = barExtension.extensions.create<FooExtension.Bar.Buz>("buz")
Then Gradle will generate Kotlin DSL accessors (it's not strictly necessary to extend ExtensionAware, Gradle will add it automatically, but it helps makes things clear)
t
How about "just" a
val bar: Bar
? (and accompanying
fun bar(action: Action<Bar>)
)
(ah, probably wouldn't "work" as an
ExtensionAware
so, yes,
fooExtension.extensions.create<Bar>("bar")
then)
j
Actually I lied — I use
Property<String>
everywhere.
a
Property<String> is better because Gradle can't instantiate a class with normal String properties :)
j
Works like a charm, thanks!
🚀 1
💥 1