load("@apple_rules_lint//lint:defs.bzl", "get_lint_config")
load(
    "@rules_rust//rust:defs.bzl",
    "rustfmt_test",
    _rust_binary = "rust_binary",
    _rust_library = "rust_library",
    _rust_test = "rust_test",
    _rust_test_suite = "rust_test_suite",
)

def _wrap_with_fmt_test(name, tags):
    config = get_lint_config("rust-rustfmt", tags)
    if config:
        rustfmt_test(
            name = "%s-fmt" % name,
            targets = [
                ":%s" % name,
            ],
            tags = [
                "lint",
                "rust-rustfmt",
                "rustfmt",
            ],
        )

def rust_library(name, **kwargs):
    _rust_library(name = name, **kwargs)
    _wrap_with_fmt_test(name, kwargs.get("tags", []))

def rust_binary(name, **kwargs):
    _rust_binary(name = name, **kwargs)
    _wrap_with_fmt_test(name, kwargs.get("tags", []))

def rust_test(name, **kwargs):
    _rust_test(name = name, **kwargs)
    _wrap_with_fmt_test(name, kwargs.get("tags", []))

def rust_test_suite(name, srcs = [], **kwargs):
    _rust_test_suite(name = name, srcs = srcs, **kwargs)
    for src in srcs:
        if not src.endswith(".rs"):
            fail("srcs should have `.rs` extensions")

        # Prefixed with `name` to allow parameterization with macros
        # The test name should not end with `.rs`
        test_name = name + "_" + src[:-3] + "_test"
        _wrap_with_fmt_test(test_name, kwargs.get("tags", []))
