Skip to content

Commit 06a0daf

Browse files
committed
Support KMP .proto sources sets
1 parent a2ddc52 commit 06a0daf

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+1377
-355
lines changed

gradle-conventions/src/main/kotlin/util/csm/template.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ object CsmTemplateProcessor {
145145
throw GradleException("Wildcard is not allowed in 'from' part of kotlin version range: $from, $pattern")
146146
}
147147

148-
if (to.contains("-") || to.contains("-")) {
148+
if (from.contains("-") || to.contains("-")) {
149149
throw GradleException("Non stable versions are not allowed in kotlin version range: $pattern")
150150
}
151151

gradle-plugin/build.gradle.kts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,11 @@ version = rootProject.libs.versions.kotlinx.rpc.get()
1616

1717
kotlin {
1818
explicitApi()
19+
20+
jvmToolchain(11)
1921
}
2022

2123
dependencies {
22-
implementation(libs.protobuf.gradle.plugin)
2324
compileOnly(libs.kotlin.gradle.plugin)
2425
}
2526

@@ -50,6 +51,7 @@ abstract class GeneratePluginVersionTask @Inject constructor(
5051
@get:Input val protobufVersion: String,
5152
@get:Input val grpcVersion: String,
5253
@get:Input val grpcKotlinVersion: String,
54+
@get:Input val bufToolVersion: String,
5355
@get:OutputDirectory val sourcesDir: File
5456
) : DefaultTask() {
5557
@TaskAction
@@ -68,6 +70,7 @@ abstract class GeneratePluginVersionTask @Inject constructor(
6870
public const val PROTOBUF_VERSION: String = "$protobufVersion"
6971
public const val GRPC_VERSION: String = "$grpcVersion"
7072
public const val GRPC_KOTLIN_VERSION: String = "$grpcKotlinVersion"
73+
public const val BUF_TOOL_VERSION: String = "$bufToolVersion"
7174
7275
""".trimIndent()
7376
)
@@ -79,9 +82,10 @@ val sourcesDir = File(project.layout.buildDirectory.asFile.get(), "generated-sou
7982
val generatePluginVersionTask = tasks.register<GeneratePluginVersionTask>(
8083
"generatePluginVersion",
8184
version.toString(),
82-
libs.versions.protobuf.asProvider().get().toString(),
83-
libs.versions.grpc.asProvider().get().toString(),
84-
libs.versions.grpc.kotlin.get().toString(),
85+
libs.versions.protobuf.asProvider().get(),
86+
libs.versions.grpc.asProvider().get(),
87+
libs.versions.grpc.kotlin.get(),
88+
libs.versions.buf.tool.get(),
8589
sourcesDir,
8690
)
8791

gradle-plugin/src/main/kotlin/kotlinx/rpc/Extensions.kt

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
package kotlinx.rpc
88

9+
import kotlinx.rpc.grpc.GrpcExtension
910
import org.gradle.api.Action
1011
import org.gradle.api.Project
1112
import org.gradle.api.model.ObjectFactory
@@ -14,11 +15,12 @@ import org.gradle.kotlin.dsl.findByType
1415
import org.gradle.api.provider.Provider
1516
import org.gradle.kotlin.dsl.newInstance
1617
import org.gradle.kotlin.dsl.property
18+
import java.util.concurrent.atomic.AtomicBoolean
1719
import javax.inject.Inject
1820

19-
public fun Project.rpcExtension(): RpcExtension = extensions.findByType<RpcExtension>() ?: RpcExtension(objects)
21+
public fun Project.rpcExtension(): RpcExtension = extensions.findByType<RpcExtension>() ?: RpcExtension(objects, this)
2022

21-
public open class RpcExtension @Inject constructor(objects: ObjectFactory) {
23+
public open class RpcExtension @Inject constructor(objects: ObjectFactory, private val project: Project) {
2224
/**
2325
* Controls `@Rpc` [annotation type-safety](https://github.com/Kotlin/kotlinx-rpc/pull/240) compile-time checkers.
2426
*
@@ -42,10 +44,15 @@ public open class RpcExtension @Inject constructor(objects: ObjectFactory) {
4244
configure.execute(strict)
4345
}
4446

47+
internal val grpcApplied = AtomicBoolean(false)
48+
4549
/**
4650
* Grpc settings.
4751
*/
48-
public val grpc: GrpcExtension = objects.newInstance<GrpcExtension>()
52+
public val grpc: GrpcExtension by lazy {
53+
grpcApplied.set(true)
54+
objects.newInstance<GrpcExtension>()
55+
}
4956

5057
/**
5158
* Grpc settings.

gradle-plugin/src/main/kotlin/kotlinx/rpc/GrpcExtension.kt

Lines changed: 0 additions & 262 deletions
This file was deleted.

gradle-plugin/src/main/kotlin/kotlinx/rpc/RpcGradlePlugin.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
package kotlinx.rpc
66

7+
import kotlinx.rpc.grpc.configurePluginProtections
8+
import kotlinx.rpc.proto.createProtoExtensions
79
import org.gradle.api.Plugin
810
import org.gradle.api.Project
911
import org.gradle.kotlin.dsl.create
@@ -15,7 +17,8 @@ public class RpcGradlePlugin : Plugin<Project> {
1517

1618
applyCompilerPlugin(target)
1719

18-
target.configureGrpc()
20+
target.createProtoExtensions()
21+
target.configurePluginProtections()
1922
}
2023

2124
private fun applyCompilerPlugin(target: Project) {

0 commit comments

Comments
 (0)