Skip to content

Commit 8359fc6

Browse files
beala-stripejohnynek
authored andcommitted
Fix Intellij Bazel Plugin support for scrooge_scala_library rule (#562)
* Thread output jars thru so IntelliJ can pick them up. * Fix linting errors. * Add todo to remove scala field/provider * Do not collect exported jars.
1 parent 64faf06 commit 8359fc6

File tree

1 file changed

+32
-13
lines changed

1 file changed

+32
-13
lines changed

twitter_scrooge/twitter_scrooge.bzl

Lines changed: 32 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -218,15 +218,13 @@ def _compile_scala(ctx, label, output, scrooge_jar, deps_java_info,
218218
scalac_jvm_flags = [],
219219
scalac_provider = ctx.attr._scalac[_ScalacProvider])
220220

221-
return java_common.create_provider(
222-
use_ijar = False,
223-
source_jars = [scrooge_jar],
224-
compile_time_jars = depset(
225-
[output], transitive = [merged_deps.compile_jars]),
226-
transitive_compile_time_jars = depset(
227-
[output], transitive = [merged_deps.transitive_compile_time_jars]),
228-
transitive_runtime_jars = depset(
229-
[output], transitive = [merged_deps.transitive_runtime_jars]))
221+
return JavaInfo(
222+
source_jar = scrooge_jar,
223+
deps = deps_java_info + implicit_deps,
224+
runtime_deps = deps_java_info + implicit_deps,
225+
exports = deps_java_info + implicit_deps,
226+
output_jar = output,
227+
compile_jar = output)
230228

231229
def _empty_java_info(deps_java_info, implicit_deps):
232230
merged_deps = java_common.merge(deps_java_info + implicit_deps)
@@ -334,10 +332,16 @@ def _scrooge_scala_library_impl(ctx):
334332
all_java = java_common.merge(exports + [aspect_info.java_info])
335333
else:
336334
all_java = aspect_info.java_info
337-
return [
338-
DefaultInfo(files = aspect_info.output_files),
339-
ScroogeInfo(aspect_info = aspect_info), all_java
340-
]
335+
336+
# TODO: Remove `scala` field once JavaInfo supports multiple
337+
# output jars. https://github.com/bazelbuild/rules_scala/issues/564
338+
return struct(
339+
scala = _create_scala_struct(ctx), # For IntelliJ support
340+
providers = [
341+
all_java,
342+
ScroogeInfo(aspect_info = aspect_info),
343+
DefaultInfo(files = aspect_info.output_files)
344+
])
341345

342346
scrooge_scala_library = rule(
343347
implementation = _scrooge_scala_library_impl,
@@ -348,6 +352,21 @@ scrooge_scala_library = rule(
348352
provides = [DefaultInfo, ScroogeInfo, JavaInfo],
349353
)
350354

355+
def _create_scala_struct(ctx):
356+
"""Create a scala provider in the shape expected by the IntelliJ bazel plugin."""
357+
output_jars = []
358+
359+
for dep in ctx.attr.deps:
360+
for j in dep[ScroogeAspectInfo].java_info.outputs.jars:
361+
output_jars.append(
362+
struct(
363+
class_jar = j.class_jar,
364+
ijar = None,
365+
source_jar = None,
366+
source_jars = []))
367+
368+
return struct(outputs = struct(jars = output_jars))
369+
351370
def _scrooge_scala_import_impl(ctx):
352371
scala_jars = depset(ctx.files.scala_jars)
353372
jars_ji = java_common.create_provider(

0 commit comments

Comments
 (0)