@@ -8,26 +8,32 @@ import com.diconium.mobile.tools.kebabkrafter.models.Endpoint
88import org.gradle.api.Action
99import org.gradle.api.NamedDomainObjectProvider
1010import org.gradle.api.Project
11+ import org.gradle.api.file.Directory
1112import org.gradle.api.file.SourceDirectorySet
1213import org.gradle.api.plugins.ExtensionAware
14+ import org.gradle.api.provider.Provider
1315import org.gradle.api.tasks.SourceSet
1416import org.gradle.api.tasks.SourceSetContainer
1517
1618fun applyGenerateKtorServer (target : Project ) {
17- val ktorServerInput = target.extensions.create(" ktorServer" , KtorServerExtension ::class .java)
1819
19- val defaultOutput = target.layout.buildDirectory.dir( " generated/sources/ktorServer/ " )
20- ktorServerInput.outputFolder.convention(defaultOutput )
20+ // create extension
21+ val ktorServerInput = target.extensions.create( " ktorServer " , KtorServerExtension :: class .java )
2122
23+ // apply defaults
24+ ktorServerInput.log.convention(false )
25+ ktorServerInput.outputFolder.convention(target.defaultOutput)
2226 ktorServerInput.transformerSpec.endpointTransformer.convention(DefaultEndpointTransformer ::class .java)
2327 ktorServerInput.transformerSpec.ktorMapper.convention(DefaultKtorControllerMapper ::class .java)
2428 ktorServerInput.transformerSpec.ktorTransformer.convention(DefaultKtorTransformer ::class .java)
2529
30+ // register task
2631 val task = target.tasks.register(" generateKtorServer" , GenerateKtorServerTask ::class .java) {
2732 it.group = " generator"
2833 it.ktorServerInput.set(ktorServerInput)
2934 }
3035
36+ // wire task output to the main source set
3137 target.pluginManager.withPlugin(" org.jetbrains.kotlin.jvm" ) {
3238 target.sourceSets { container ->
3339 container.main.configure { sourceSet ->
@@ -58,3 +64,6 @@ private class DefaultEndpointTransformer : EndpointTransformer {
5864private class DefaultKtorTransformer : KtorTransformer {
5965 override fun transform (endpoint : Endpoint , controller : KtorController ) = controller
6066}
67+
68+ private val Project .defaultOutput: Provider <Directory >
69+ get() = this .layout.buildDirectory.dir(" generated/sources/ktorServer/" )
0 commit comments