Skip to content

Commit 7053b01

Browse files
committed
Fix locators for protoc plugins
1 parent 06a0daf commit 7053b01

File tree

3 files changed

+49
-8
lines changed

3 files changed

+49
-8
lines changed

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

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@
44

55
package kotlinx.rpc.grpc
66

7-
import kotlinx.rpc.LIBRARY_VERSION
7+
import kotlinx.rpc.GRPC_KOTLIN_VERSION
8+
import kotlinx.rpc.GRPC_VERSION
9+
import kotlinx.rpc.PROTOBUF_VERSION
810
import kotlinx.rpc.buf.BufExtension
911
import kotlinx.rpc.proto.ProtocPlugin.Companion.GRPC_JAVA
1012
import kotlinx.rpc.proto.ProtocPlugin.Companion.GRPC_KOTLIN
@@ -15,8 +17,10 @@ import kotlinx.rpc.buf.tasks.BufGenerateTask
1517
import kotlinx.rpc.buf.tasks.registerBufGenYamlUpdateTask
1618
import kotlinx.rpc.buf.tasks.registerBufGenerateTask
1719
import kotlinx.rpc.buf.tasks.registerBufYamlUpdateTask
20+
import kotlinx.rpc.proto.KXRPC_PLUGIN_JAR_CONFIGURATION
1821
import kotlinx.rpc.proto.ProtoSourceSet
1922
import kotlinx.rpc.proto.ProtocPlugin
23+
import kotlinx.rpc.proto.configureKxRpcPluginJarConfiguration
2024
import kotlinx.rpc.proto.configureProtoExtensions
2125
import kotlinx.rpc.proto.grpcJava
2226
import kotlinx.rpc.proto.grpcKotlin
@@ -35,7 +39,10 @@ import org.gradle.api.plugins.JavaPluginExtension
3539
import org.gradle.api.tasks.compile.JavaCompile
3640
import org.gradle.kotlin.dsl.findByType
3741
import org.gradle.kotlin.dsl.newInstance
42+
import org.gradle.kotlin.dsl.the
3843
import org.gradle.kotlin.dsl.withType
44+
import org.jetbrains.kotlin.gradle.dsl.ExplicitApiMode
45+
import org.jetbrains.kotlin.gradle.dsl.KotlinBaseExtension
3946
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
4047
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
4148
import javax.inject.Inject
@@ -60,6 +67,7 @@ public open class GrpcExtension @Inject constructor(
6067

6168
init {
6269
project.configureBufExecutable()
70+
project.configureKxRpcPluginJarConfiguration()
6371

6472
createDefaultProtocPlugins()
6573

@@ -193,33 +201,38 @@ public open class GrpcExtension @Inject constructor(
193201

194202
private fun createDefaultProtocPlugins() {
195203
protocPlugins.create(KXRPC) {
196-
remote {
197-
locator.set("buf.build/kxrpc/grpc:${LIBRARY_VERSION}")
204+
local {
205+
javaJar(project.configurations.named(KXRPC_PLUGIN_JAR_CONFIGURATION).map { it.singleFile.absolutePath })
198206
}
199207

200208
options.put("debugOutput", "protobuf-kxrpc-plugin.log")
201209
options.put("messageMode", "interface")
210+
options.put("explicitApiModeEnabled", project.provider {
211+
project.the<KotlinBaseExtension>().explicitApi != ExplicitApiMode.Disabled
212+
})
202213
}
203214

204215
protocPlugins.create(GRPC_JAVA) {
205216
isJava.set(true)
206217

207218
remote {
208-
locator.set("buf.build/grpc/java")
219+
locator.set("buf.build/grpc/java:v$GRPC_VERSION")
209220
}
210221
}
211222

212223
protocPlugins.create(GRPC_KOTLIN) {
213224
remote {
214-
locator.set("buf.build/grpc/kotlin")
225+
locator.set("buf.build/grpc/kotlin:v$GRPC_KOTLIN_VERSION")
215226
}
216227
}
217228

218229
protocPlugins.create(PROTOBUF_JAVA) {
219230
isJava.set(true)
220231

221232
remote {
222-
locator.set("buf.build/protocolbuffers/java")
233+
// for some reason they omit the first digit in this version:
234+
// https://buf.build/protocolbuffers/java?version=v31.1
235+
locator.set("buf.build/protocolbuffers/java:v${PROTOBUF_VERSION.substringAfter(".")}")
223236
}
224237
}
225238
}

gradle-plugin/src/main/kotlin/kotlinx/rpc/proto/ProtocPlugin.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,8 @@ public open class ProtocPlugin(
5858
) {
5959
public val isJava: Property<Boolean> = project.objects.property<Boolean>().convention(false)
6060

61-
public val options: MapProperty<String, String?> = project.objects
62-
.mapProperty<String, String?>()
61+
public val options: MapProperty<String, Any?> = project.objects
62+
.mapProperty<String, Any?>()
6363
.convention(emptyMap())
6464

6565
public fun local(action: Action<Artifact.Local>) {
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
/*
2+
* Copyright 2023-2025 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.
3+
*/
4+
5+
package kotlinx.rpc.proto
6+
7+
import kotlinx.rpc.BUF_TOOL_VERSION
8+
import kotlinx.rpc.LIBRARY_VERSION
9+
import org.gradle.api.Project
10+
11+
// https://maven.pkg.jetbrains.space/public/p/krpc/grpc/org/jetbrains/kotlinx/kotlinx-rpc-protobuf-plugin/0.8.1-grpc-99/kotlinx-rpc-protobuf-plugin-0.8.1-grpc-99-all.jar
12+
13+
public const val KXRPC_PLUGIN_JAR_CONFIGURATION: String = "kxrpcPluginJar"
14+
15+
internal fun Project.configureKxRpcPluginJarConfiguration() {
16+
configurations.create(KXRPC_PLUGIN_JAR_CONFIGURATION)
17+
18+
dependencies.add(
19+
KXRPC_PLUGIN_JAR_CONFIGURATION,
20+
mapOf(
21+
"group" to "org.jetbrains.kotlinx",
22+
"name" to "kotlinx-rpc-protobuf-plugin",
23+
"version" to LIBRARY_VERSION,
24+
"classifier" to "all",
25+
"ext" to "jar",
26+
),
27+
)
28+
}

0 commit comments

Comments
 (0)