From f944f23f0fee987c61ef472a58f1650d25ce23aa Mon Sep 17 00:00:00 2001 From: Paul Johnston Date: Mon, 12 May 2025 16:54:16 -0600 Subject: [PATCH] Advertise Zio symbols if the label includes "zio" --- pkg/rule/rules_scala/scala_library.go | 25 ++++++++++++++----- rules/private/proto_repository_tools_srcs.bzl | 3 +++ 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/pkg/rule/rules_scala/scala_library.go b/pkg/rule/rules_scala/scala_library.go index e60555ccd..0c5344bb5 100644 --- a/pkg/rule/rules_scala/scala_library.go +++ b/pkg/rule/rules_scala/scala_library.go @@ -452,13 +452,26 @@ func provideScalaImports(files []*protoc.File, resolver protoc.ImportResolver, f resolver.Provide(lang, "service", name+"Client", from) resolver.Provide(lang, "service", name+"Handler", from) resolver.Provide(lang, "service", name+"Server", from) - // TOOD: if this is configured on the proto_plugin, we won't know - // about the plugin option. Advertise them anyway. - // if options["server_power_apis"] { - resolver.Provide(lang, "service", name+"PowerApi", from) - resolver.Provide(lang, "service", name+"PowerApiHandler", from) - resolver.Provide(lang, "service", name+"ClientPowerApi", from) + + if strings.Contains(from.Name, "zio") { + zioName := "Zio" + s.Name + if pkgName != "" { + zioName = pkgName + "." + zioName + } + // if the scala rule name includes the term 'zio', assume this is a + // zio library and advertize the zio symbols as well. + resolver.Provide(lang, "service", zioName, from) + + } else { + // options["server_power_apis"] may or may not be enabled and + // it's difficult to know if the option is present. Advertize + // them optimitically anyway. + resolver.Provide(lang, "service", name+"PowerApi", from) + resolver.Provide(lang, "service", name+"PowerApiHandler", from) + resolver.Provide(lang, "service", name+"ClientPowerApi", from) + } // } + } } } diff --git a/rules/private/proto_repository_tools_srcs.bzl b/rules/private/proto_repository_tools_srcs.bzl index 94d34a147..462b8167e 100644 --- a/rules/private/proto_repository_tools_srcs.bzl +++ b/rules/private/proto_repository_tools_srcs.bzl @@ -100,6 +100,8 @@ PROTO_REPOSITORY_TOOLS_SRCS = [ "@build_stack_rules_proto//pkg/plugin/grpcecosystem/grpcgateway:protoc-gen-grpc-gateway.go", "@build_stack_rules_proto//pkg/plugin/scalapb/scalapb:BUILD.bazel", "@build_stack_rules_proto//pkg/plugin/scalapb/scalapb:protoc_gen_scala.go", + "@build_stack_rules_proto//pkg/plugin/scalapb/zio_grpc:BUILD.bazel", + "@build_stack_rules_proto//pkg/plugin/scalapb/zio_grpc:protoc_gen_zio_grpc.go", "@build_stack_rules_proto//pkg/plugin/stackb/grpc_js:BUILD.bazel", "@build_stack_rules_proto//pkg/plugin/stackb/grpc_js:protoc-gen-grpc-js.go", "@build_stack_rules_proto//pkg/plugin/stephenh/ts-proto:BUILD.bazel", @@ -179,6 +181,7 @@ PROTO_REPOSITORY_TOOLS_SRCS = [ "@build_stack_rules_proto//plugin/grpc/grpc-web:BUILD.bazel", "@build_stack_rules_proto//plugin/grpc-ecosystem/grpc-gateway:BUILD.bazel", "@build_stack_rules_proto//plugin/scalapb/scalapb:BUILD.bazel", + "@build_stack_rules_proto//plugin/scalapb/zio-grpc:BUILD.bazel", "@build_stack_rules_proto//plugin/stackb/grpc_js:BUILD.bazel", "@build_stack_rules_proto//plugin/stephenh/ts-proto:BUILD.bazel", "@build_stack_rules_proto//rules:BUILD.bazel",