load("@bazel_skylib//rules:diff_test.bzl", "diff_test")
load("@bazel_skylib//rules:write_file.bzl", "write_file")
load("@rules_shell//shell:sh_binary.bzl", "sh_binary")
load("@stardoc//stardoc:stardoc.bzl", "stardoc")

_DOC_SRCS = {
    "rules": [
        "apple_genrule",
        "toolchain_substitution",
        "universal_binary",
    ],
}

write_file(
    name = "rules_header",
    out = "rules_header.vm",
    content = [
        "<!-- Generated with Stardoc, Do Not Edit! -->",
        "",
        "${moduleDocstring}",
        "On this page:",
        "",
    ] + ["  * [{0}](#{0})".format(r) for r in _DOC_SRCS["rules"]] + [
        "",
    ],
)

[
    stardoc(
        name = file + "_doc",
        out = file + ".md_pre",
        header_template = file + "_header.vm",
        input = "//rules:rules.doc.bzl",
        symbol_names = symbols,
        tags = ["no-sandbox"],  # https://github.com/bazelbuild/stardoc/issues/112
        deps = ["//rules"],
    )
    for [
        file,
        symbols,
    ] in _DOC_SRCS.items()
]

[
    genrule(
        name = "fix_stardoc_" + file,
        srcs = [file + ".md_pre"],
        outs = [file + ".md_"],
        cmd = "sed '/rules.doc.bzl/,+1d' $(SRCS) > $(OUTS)",
    )
    for file in _DOC_SRCS.keys()
]

[
    diff_test(
        name = "test_" + file,
        failure_message = "\nPlease update the docs by running\n    bazel run //doc:update",
        file1 = file + ".md_",
        file2 = file + ".md",
    )
    for file in _DOC_SRCS.keys()
]

write_file(
    name = "gen_update",
    out = "update.sh",
    content = [
        "#!/usr/bin/env bash",
        "cd $BUILD_WORKSPACE_DIRECTORY",
    ] + [
        "cp -fv bazel-bin/doc/{0}.md_ doc/{0}.md".format(
            file,
        )
        for file in _DOC_SRCS.keys()
    ],
)

sh_binary(
    name = "update",
    srcs = ["update.sh"],
    data = [file + ".md_" for file in _DOC_SRCS.keys()],
)
