"""Custom rule to test the JavaPluginInfo provider"""

load("//java/common:java_info.bzl", "JavaInfo")
load(
    "//java/common:java_plugin_info.bzl",
    "JavaPluginInfo",
)

def _impl(ctx):
    output_jar = ctx.actions.declare_file(ctx.label.name + "/lib.jar")
    ctx.actions.write(output_jar, "")
    dep = JavaInfo(
        output_jar = output_jar,
        compile_jar = None,
        deps = [d[JavaInfo] for d in ctx.attr.deps],
    )
    data = depset(ctx.files.data) if ctx.attr.data_as_depset else ctx.files.data
    return [JavaPluginInfo(
        runtime_deps = [dep],
        processor_class = ctx.attr.processor_class,
        data = data,
        generates_api = ctx.attr.generates_api,
    )]

custom_plugin = rule(
    implementation = _impl,
    attrs = {
        "deps": attr.label_list(),
        "processor_class": attr.string(),
        "data": attr.label_list(allow_files = True),
        "generates_api": attr.bool(default = False),
        "data_as_depset": attr.bool(default = False),
    },
)
