Skip to content

Commit

Permalink
feat: Add Kotlin (JVM) support
Browse files Browse the repository at this point in the history
Provide rules to build Kotlin proto and grpc libraries. Currently
upstream Protobuf and gRPC support only JVM-flavour Kotlin.

Fixes #139.
  • Loading branch information
Zetten committed Feb 17, 2023
1 parent bbb8193 commit cd72ec4
Show file tree
Hide file tree
Showing 32 changed files with 2,179 additions and 35 deletions.
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,10 @@ Full documentation for the current and previous versions [can be found here](htt
| [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)) |
| [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)) |
| [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)) |
| [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)) |
| [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)) |
| [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)) |
| [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)) |
| [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)) |
| [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)) |
| [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)) |
Expand Down
75 changes: 48 additions & 27 deletions WORKSPACE
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,54 @@ rules_proto_dependencies()

rules_proto_toolchains()

#
# Java
#
load("//java:repositories.bzl", "java_repos")

java_repos()

#
# Kotlin-JVM
#
#
# Load rules_kotlin/com_github_grpc_grpc_kotlin before #grpc_extra_deps, as it depends on an older version.
# Also so we can get the maven_install artifacts/override_targets.
#
load("//kotlin:repositories.bzl", "kotlin_repos")

kotlin_repos()

load("@io_bazel_rules_kotlin//kotlin:repositories.bzl", "kotlin_repositories")

kotlin_repositories()

load("@io_bazel_rules_kotlin//kotlin:core.bzl", "kt_register_toolchains")

kt_register_toolchains()

load("@rules_jvm_external//:defs.bzl", "maven_install")
load("@io_grpc_grpc_java//:repositories.bzl", "IO_GRPC_GRPC_JAVA_ARTIFACTS", "IO_GRPC_GRPC_JAVA_OVERRIDE_TARGETS", "grpc_java_repositories")
load("@com_github_grpc_grpc_kotlin//:repositories.bzl", "IO_GRPC_GRPC_KOTLIN_ARTIFACTS", "IO_GRPC_GRPC_KOTLIN_OVERRIDE_TARGETS", "grpc_kt_repositories")

maven_install(
artifacts = IO_GRPC_GRPC_JAVA_ARTIFACTS + IO_GRPC_GRPC_KOTLIN_ARTIFACTS,
generate_compat_repositories = True,
override_targets = dict(IO_GRPC_GRPC_JAVA_OVERRIDE_TARGETS.items() +
IO_GRPC_GRPC_KOTLIN_OVERRIDE_TARGETS.items()),
repositories = [
"https://repo.maven.apache.org/maven2/",
],
)

load("@maven//:compat.bzl", "compat_repositories")

compat_repositories()

grpc_java_repositories()

grpc_kt_repositories()

#
# Android
#
Expand Down Expand Up @@ -91,24 +139,6 @@ load("//android:repositories.bzl", "android_repos")

android_repos()

load("@rules_jvm_external//:defs.bzl", "maven_install")
load("@io_grpc_grpc_java//:repositories.bzl", "IO_GRPC_GRPC_JAVA_ARTIFACTS", "IO_GRPC_GRPC_JAVA_OVERRIDE_TARGETS", "grpc_java_repositories")

maven_install(
artifacts = IO_GRPC_GRPC_JAVA_ARTIFACTS,
generate_compat_repositories = True,
override_targets = IO_GRPC_GRPC_JAVA_OVERRIDE_TARGETS,
repositories = [
"https://repo.maven.apache.org/maven2/",
],
)

load("@maven//:compat.bzl", "compat_repositories")

compat_repositories()

grpc_java_repositories()

load("@build_bazel_rules_android//android:sdk_repository.bzl", "android_sdk_repository")

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

go_repositories()

#
# Java
#
load("//java:repositories.bzl", "java_repos")

java_repos()

# grpc_java_repositories already called above in android

#
# JavaScript
#
Expand Down
6 changes: 3 additions & 3 deletions docs/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -92,9 +92,9 @@ notified of new releases, you can use GitHub's 'Watch Releases Only' on the repo
http_archive(
name = "rules_proto_grpc",
sha256 = "fb7fc7a3c19a92b2f15ed7c4ffb2983e956625c1436f57a3430b897ba9864059",
strip_prefix = "rules_proto_grpc-4.3.0",
urls = ["https://github.com/rules-proto-grpc/rules_proto_grpc/archive/4.3.0.tar.gz"],
sha256 = "{ARCHIVE_TAR_GZ_SHA256}",
strip_prefix = "rules_proto_grpc-{GIT_COMMIT_ID}",
urls = ["https://github.com/rules-proto-grpc/rules_proto_grpc/archive/{GIT_COMMIT_ID}.tar.gz"],
)
load("@rules_proto_grpc//:repositories.bzl", "rules_proto_grpc_toolchains", "rules_proto_grpc_repos")
Expand Down
Loading

0 comments on commit cd72ec4

Please sign in to comment.