Skip to content

Commit cd72ec4

Browse files
committed
feat: Add Kotlin (JVM) support
Provide rules to build Kotlin proto and grpc libraries. Currently upstream Protobuf and gRPC support only JVM-flavour Kotlin. Fixes rules-proto-grpc#139.
1 parent bbb8193 commit cd72ec4

32 files changed

+2179
-35
lines changed

README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,10 @@ Full documentation for the current and previous versions [can be found here](htt
7676
| [Java](https://rules-proto-grpc.com/en/latest/lang/java.html) | [java_grpc_compile](https://rules-proto-grpc.com/en/latest/lang/java.html#java-grpc-compile) | Generates a Java protobuf and gRPC srcjar file ([example](/example/java/java_grpc_compile)) |
7777
| [Java](https://rules-proto-grpc.com/en/latest/lang/java.html) | [java_proto_library](https://rules-proto-grpc.com/en/latest/lang/java.html#java-proto-library) | Generates a Java protobuf library using ``java_library`` ([example](/example/java/java_proto_library)) |
7878
| [Java](https://rules-proto-grpc.com/en/latest/lang/java.html) | [java_grpc_library](https://rules-proto-grpc.com/en/latest/lang/java.html#java-grpc-library) | Generates a Java protobuf and gRPC library using ``java_library`` ([example](/example/java/java_grpc_library)) |
79+
| [Kotlin](https://rules-proto-grpc.com/en/latest/lang/kotlin.html) | [kotlin_proto_compile](https://rules-proto-grpc.com/en/latest/lang/kotlin.html#kotlin-proto-compile) | Generates a Kotlin (JVM) protobuf srcjar file ([example](/example/kotlin/kotlin_proto_compile)) |
80+
| [Kotlin](https://rules-proto-grpc.com/en/latest/lang/kotlin.html) | [kotlin_grpc_compile](https://rules-proto-grpc.com/en/latest/lang/kotlin.html#kotlin-grpc-compile) | Generates a Kotlin (JVM) protobuf and gRPC srcjar file ([example](/example/kotlin/kotlin_grpc_compile)) |
81+
| [Kotlin](https://rules-proto-grpc.com/en/latest/lang/kotlin.html) | [kotlin_proto_library](https://rules-proto-grpc.com/en/latest/lang/kotlin.html#kotlin-proto-library) | Generates a Kotlin (JVM) protobuf library using ``kt_jvm_library`` ([example](/example/kotlin/kotlin_proto_library)) |
82+
| [Kotlin](https://rules-proto-grpc.com/en/latest/lang/kotlin.html) | [kotlin_grpc_library](https://rules-proto-grpc.com/en/latest/lang/kotlin.html#kotlin-grpc-library) | Generates a Kotlin (JVM) protobuf and gRPC library using ``kt_jvm_library`` ([example](/example/kotlin/kotlin_grpc_library)) |
7983
| [JavaScript](https://rules-proto-grpc.com/en/latest/lang/js.html) | [js_proto_compile](https://rules-proto-grpc.com/en/latest/lang/js.html#js-proto-compile) | Generates JavaScript protobuf ``.js`` and ``.d.ts`` files ([example](/example/js/js_proto_compile)) |
8084
| [JavaScript](https://rules-proto-grpc.com/en/latest/lang/js.html) | [js_grpc_node_compile](https://rules-proto-grpc.com/en/latest/lang/js.html#js-grpc-node-compile) | Generates JavaScript protobuf and gRPC-node ``.js`` and ``.d.ts`` files ([example](/example/js/js_grpc_node_compile)) |
8185
| [JavaScript](https://rules-proto-grpc.com/en/latest/lang/js.html) | [js_grpc_web_compile](https://rules-proto-grpc.com/en/latest/lang/js.html#js-grpc-web-compile) | Generates JavaScript protobuf and gRPC-Web ``.js`` and ``.d.ts`` files ([example](/example/js/js_grpc_web_compile)) |

WORKSPACE

Lines changed: 48 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,54 @@ rules_proto_dependencies()
2020

2121
rules_proto_toolchains()
2222

23+
#
24+
# Java
25+
#
26+
load("//java:repositories.bzl", "java_repos")
27+
28+
java_repos()
29+
30+
#
31+
# Kotlin-JVM
32+
#
33+
#
34+
# Load rules_kotlin/com_github_grpc_grpc_kotlin before #grpc_extra_deps, as it depends on an older version.
35+
# Also so we can get the maven_install artifacts/override_targets.
36+
#
37+
load("//kotlin:repositories.bzl", "kotlin_repos")
38+
39+
kotlin_repos()
40+
41+
load("@io_bazel_rules_kotlin//kotlin:repositories.bzl", "kotlin_repositories")
42+
43+
kotlin_repositories()
44+
45+
load("@io_bazel_rules_kotlin//kotlin:core.bzl", "kt_register_toolchains")
46+
47+
kt_register_toolchains()
48+
49+
load("@rules_jvm_external//:defs.bzl", "maven_install")
50+
load("@io_grpc_grpc_java//:repositories.bzl", "IO_GRPC_GRPC_JAVA_ARTIFACTS", "IO_GRPC_GRPC_JAVA_OVERRIDE_TARGETS", "grpc_java_repositories")
51+
load("@com_github_grpc_grpc_kotlin//:repositories.bzl", "IO_GRPC_GRPC_KOTLIN_ARTIFACTS", "IO_GRPC_GRPC_KOTLIN_OVERRIDE_TARGETS", "grpc_kt_repositories")
52+
53+
maven_install(
54+
artifacts = IO_GRPC_GRPC_JAVA_ARTIFACTS + IO_GRPC_GRPC_KOTLIN_ARTIFACTS,
55+
generate_compat_repositories = True,
56+
override_targets = dict(IO_GRPC_GRPC_JAVA_OVERRIDE_TARGETS.items() +
57+
IO_GRPC_GRPC_KOTLIN_OVERRIDE_TARGETS.items()),
58+
repositories = [
59+
"https://repo.maven.apache.org/maven2/",
60+
],
61+
)
62+
63+
load("@maven//:compat.bzl", "compat_repositories")
64+
65+
compat_repositories()
66+
67+
grpc_java_repositories()
68+
69+
grpc_kt_repositories()
70+
2371
#
2472
# Android
2573
#
@@ -91,24 +139,6 @@ load("//android:repositories.bzl", "android_repos")
91139

92140
android_repos()
93141

94-
load("@rules_jvm_external//:defs.bzl", "maven_install")
95-
load("@io_grpc_grpc_java//:repositories.bzl", "IO_GRPC_GRPC_JAVA_ARTIFACTS", "IO_GRPC_GRPC_JAVA_OVERRIDE_TARGETS", "grpc_java_repositories")
96-
97-
maven_install(
98-
artifacts = IO_GRPC_GRPC_JAVA_ARTIFACTS,
99-
generate_compat_repositories = True,
100-
override_targets = IO_GRPC_GRPC_JAVA_OVERRIDE_TARGETS,
101-
repositories = [
102-
"https://repo.maven.apache.org/maven2/",
103-
],
104-
)
105-
106-
load("@maven//:compat.bzl", "compat_repositories")
107-
108-
compat_repositories()
109-
110-
grpc_java_repositories()
111-
112142
load("@build_bazel_rules_android//android:sdk_repository.bzl", "android_sdk_repository")
113143

114144
android_sdk_repository(name = "androidsdk")
@@ -181,15 +211,6 @@ load("@grpc_ecosystem_grpc_gateway//:repositories.bzl", "go_repositories")
181211

182212
go_repositories()
183213

184-
#
185-
# Java
186-
#
187-
load("//java:repositories.bzl", "java_repos")
188-
189-
java_repos()
190-
191-
# grpc_java_repositories already called above in android
192-
193214
#
194215
# JavaScript
195216
#

docs/index.rst

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -92,9 +92,9 @@ notified of new releases, you can use GitHub's 'Watch Releases Only' on the repo
9292
9393
http_archive(
9494
name = "rules_proto_grpc",
95-
sha256 = "fb7fc7a3c19a92b2f15ed7c4ffb2983e956625c1436f57a3430b897ba9864059",
96-
strip_prefix = "rules_proto_grpc-4.3.0",
97-
urls = ["https://github.com/rules-proto-grpc/rules_proto_grpc/archive/4.3.0.tar.gz"],
95+
sha256 = "{ARCHIVE_TAR_GZ_SHA256}",
96+
strip_prefix = "rules_proto_grpc-{GIT_COMMIT_ID}",
97+
urls = ["https://github.com/rules-proto-grpc/rules_proto_grpc/archive/{GIT_COMMIT_ID}.tar.gz"],
9898
)
9999
100100
load("@rules_proto_grpc//:repositories.bzl", "rules_proto_grpc_toolchains", "rules_proto_grpc_repos")

0 commit comments

Comments
 (0)