blob: 891cd3510728078c08a6574e023ae69554e3ed4e [file]
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": (
"//rules:rules.doc.bzl",
[
"apple_genrule",
"toolchain_substitution",
"universal_binary",
],
),
"apple_support": (
"//lib:apple_support.bzl",
[
"apple_support.action_required_attrs",
"apple_support.path_placeholders.platform_frameworks",
"apple_support.path_placeholders.sdkroot",
"apple_support.path_placeholders.xcode",
"apple_support.platform_constraint_attrs",
"apple_support.run",
"apple_support.run_shell",
"apple_support.target_arch_from_rule_ctx",
"apple_support.target_environment_from_rule_ctx",
"apple_support.target_os_from_rule_ctx",
"apple_support.xcode_path_resolve_level",
],
),
"xcode_support": (
"//lib:xcode_support.bzl",
[
"xcode_support.get_current_sdk",
"xcode_support.get_current_xcode",
"xcode_support.is_xcode_at_least_version",
],
),
}
[
write_file(
name = file + "_header",
out = file + "_header.vm",
content = [
"<!-- Generated with Stardoc, Do Not Edit! -->",
"",
"${moduleDocstring}",
"On this page:",
"",
] + [" * [{0}](#{0})".format(r) for r in _DOC_SRCS[file][1]] + [
"",
],
)
for file in _DOC_SRCS.keys()
]
[
stardoc(
name = file + "_doc",
out = file + ".md_pre",
header_template = file + "_header.vm",
input = doc_file,
symbol_names = symbols,
tags = ["no-sandbox"], # https://github.com/bazelbuild/stardoc/issues/112
deps = [
"//rules",
"//xcode:providers",
],
)
for [
file,
(doc_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()],
)