"""
Simple rule for running buildifier from the toolchain config
"""

load("@platforms//host:constraints.bzl", "HOST_CONSTRAINTS")

def _buildifier_binary(ctx):
    buildifier = ctx.toolchains["@buildifier_prebuilt//buildifier:toolchain"]._tool
    script = ctx.actions.declare_file("buildifier")
    ctx.actions.symlink(
        output = script,
        target_file = buildifier,
        is_executable = True,
    )

    return [
        DefaultInfo(
            runfiles = ctx.runfiles(files = [buildifier]),
            executable = script,
        ),
    ]

buildifier_binary = rule(
    implementation = _buildifier_binary,
    attrs = {},
    exec_compatible_with = HOST_CONSTRAINTS,
    toolchains = ["@buildifier_prebuilt//buildifier:toolchain"],
    executable = True,
)
