blob: ec0a412b073e12eec0379fc6d9bf5f8ba06933bb [file] [log] [blame]
"""Custom rule to test that source jar names are derived from the output jar"""
load("//java/common:java_common.bzl", "java_common")
load("//java/common:java_semantics.bzl", "semantics")
def _impl(ctx):
output_jar = ctx.actions.declare_file(ctx.attr.name + "/amazing.jar")
other_output_jar = ctx.actions.declare_file(ctx.attr.name + "/wonderful.jar")
deps = [dep[java_common.provider] for dep in ctx.attr.deps]
compilation_provider = java_common.compile(
ctx,
source_files = ctx.files.srcs,
output = output_jar,
deps = deps,
java_toolchain = semantics.find_java_toolchain(ctx),
)
other_compilation_provider = java_common.compile(
ctx,
source_files = ctx.files.srcs,
output = other_output_jar,
deps = deps,
java_toolchain = semantics.find_java_toolchain(ctx),
)
result_provider = java_common.merge([compilation_provider, other_compilation_provider])
return [
DefaultInfo(
files = depset([output_jar]),
),
result_provider,
]
custom_library_with_named_outputs = rule(
implementation = _impl,
attrs = {
"srcs": attr.label_list(allow_files = [".java"]),
"deps": attr.label_list(),
},
toolchains = [semantics.JAVA_TOOLCHAIN_TYPE],
fragments = ["java"],
)