Skip to content

Commit 3e96df3

Browse files
committed
Better apply defaults
1 parent 33c563d commit 3e96df3

File tree

2 files changed

+16
-4
lines changed

2 files changed

+16
-4
lines changed

kebab-krafter/src/main/kotlin/com/diconium/mobile/tools/kebabkrafter/plugin/server/ApplyGenerateKtorServer.kt

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,26 +8,32 @@ import com.diconium.mobile.tools.kebabkrafter.models.Endpoint
88
import org.gradle.api.Action
99
import org.gradle.api.NamedDomainObjectProvider
1010
import org.gradle.api.Project
11+
import org.gradle.api.file.Directory
1112
import org.gradle.api.file.SourceDirectorySet
1213
import org.gradle.api.plugins.ExtensionAware
14+
import org.gradle.api.provider.Provider
1315
import org.gradle.api.tasks.SourceSet
1416
import org.gradle.api.tasks.SourceSetContainer
1517

1618
fun 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 {
5864
private 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/")

kebab-krafter/src/main/kotlin/com/diconium/mobile/tools/kebabkrafter/plugin/server/KtorServerExtension.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ interface KtorServerExtension {
4141

4242
/**
4343
* True to enable logging; false otherwise
44+
* defaults to: false
4445
*/
4546
@get:Console
4647
val log: Property<Boolean>
@@ -81,9 +82,11 @@ interface KtorServerExtension {
8182

8283
//region output
8384
/**
84-
* Output folder for the generated files (defaults to 'build/generated/sources/ktorServer/')
85+
* Output folder for the generated files
86+
* defaults to: build/generated/sources/ktorServer/
8587
*/
8688
@get:OutputDirectory
89+
@get:Optional
8790
val outputFolder: DirectoryProperty
8891
//endregion
8992

0 commit comments

Comments
 (0)