"Provide access to a bats executable"

BATS_CORE_VERSIONS = {
    "v1.10.0": "a1a9f7875aa4b6a9480ca384d5865f1ccf1b0b1faead6b47aa47d79709a5c5fd",
}

BATS_SUPPORT_VERSIONS = {
    "v0.3.0": "7815237aafeb42ddcc1b8c698fc5808026d33317d8701d5ec2396e9634e2918f",
}

BATS_ASSERT_VERSIONS = {
    "v2.1.0": "98ca3b685f8b8993e48ec057565e6e2abcc541034ed5b0e81f191505682037fd",
}

BATS_FILE_VERSIONS = {
    "v0.4.0": "9b69043241f3af1c2d251f89b4fcafa5df3f05e97b89db18d7c9bdf5731bb27a",
}

BATS_CORE_TEMPLATE = """\
load("@local_config_platform//:constraints.bzl", "HOST_CONSTRAINTS")
load("@aspect_bazel_lib//lib/private:bats_toolchain.bzl", "bats_toolchain")
load("@aspect_bazel_lib//lib:copy_to_directory.bzl", "copy_to_directory")

copy_to_directory(
    name = "core",
    hardlink = "on",
    srcs = glob([
        "lib/**",
        "libexec/**"
    ]) + ["bin/bats"],
    out = "bats-core",
)

bats_toolchain(
    name = "toolchain",
    core = ":core",
    libraries = {libraries}
)

toolchain(
    name = "bats_toolchain",
    exec_compatible_with = HOST_CONSTRAINTS,
    toolchain = ":toolchain",
    toolchain_type = "@aspect_bazel_lib//lib:bats_toolchain_type",
)
"""

BATS_LIBRARY_TEMPLATE = """\
load("@aspect_bazel_lib//lib:copy_to_directory.bzl", "copy_to_directory")

copy_to_directory(
    name = "{name}",
    hardlink = "on",
    srcs = glob([
        "src/**",
        "load.bash",
    ]),
    out = "bats-{name}",
    visibility = ["//visibility:public"]
)
"""

BatsInfo = provider(
    doc = "Provide info for executing bats",
    fields = {
        "core": "bats executable",
        "libraries": "bats helper libraries",
    },
)

def _bats_toolchain_impl(ctx):
    core = ctx.file.core

    default_info = DefaultInfo(
        files = depset(ctx.files.core + ctx.files.libraries),
        runfiles = ctx.runfiles(ctx.files.core + ctx.files.libraries),
    )

    batsinfo = BatsInfo(
        core = core,
        libraries = ctx.files.libraries,
    )

    # Export all the providers inside our ToolchainInfo
    # so the resolved_toolchain rule can grab and re-export them.
    toolchain_info = platform_common.ToolchainInfo(
        batsinfo = batsinfo,
        default = default_info,
    )

    return [toolchain_info, default_info]

bats_toolchain = rule(
    implementation = _bats_toolchain_impl,
    attrs = {
        "core": attr.label(
            doc = "Label to the bats executable",
            allow_single_file = True,
            mandatory = True,
        ),
        "libraries": attr.label_list(),
    },
)
