blob: 0f4842b507c94b91081b9150c4c49bb3f17fecc0 [file] [log] [blame]
load("@bazel_skylib//:bzl_library.bzl", "bzl_library")
load("@stardoc//stardoc:stardoc.bzl", "stardoc")
load("//:page.bzl", "gen_header", "page")
package(default_visibility = ["//visibility:private"])
bzl_library(
name = "docs_deps",
srcs = [
"@bazel_tools//tools:bzl_srcs",
"@com_google_protobuf//:bzl_srcs",
],
deps = [
"@bazel_features//:deps",
"@bazel_features//:features",
"@bazel_skylib//lib:paths",
"@bazel_skylib//lib:selects",
"@bazel_skylib//lib:structs",
"@bazel_skylib//rules:common_settings",
"@rules_proto//proto:defs",
"@rules_proto//proto:repositories",
],
)
bzl_library(
name = "all_docs",
deps = [
":docs_deps",
"@rules_rust//bindgen:bzl_lib",
"@rules_rust//cargo:bzl_lib",
"@rules_rust//crate_universe:bzl_lib",
"@rules_rust//crate_universe/private/module_extensions:bzl_lib",
"@rules_rust//proto:bzl_lib",
"@rules_rust//rust:bzl_lib",
"@rules_rust//wasm_bindgen:bzl_lib",
],
)
PAGES = dict([
page(
name = "cargo",
symbols = [
"cargo_bootstrap_repository",
"cargo_build_script",
"cargo_dep_env",
"cargo_env",
],
),
page(
name = "rust",
symbols = [
"rust_binary",
"rust_library",
"rust_library_group",
"rust_static_library",
"rust_shared_library",
"rust_proc_macro",
"rust_test",
"rust_test_suite",
"error_format",
"extra_rustc_flag",
"extra_rustc_flags",
"capture_clippy_output",
],
),
page(
name = "providers",
symbols = [
"CrateInfo",
"DepInfo",
"StdLibInfo",
],
),
page(
name = "rust_analyzer",
header_template = ":rust_analyzer.vm",
symbols = [
"rust_analyzer_aspect",
"rust_analyzer_toolchain",
],
),
page(
name = "rust_bindgen",
header_template = ":rust_bindgen.vm",
symbols = [
"rust_bindgen_library",
"rust_bindgen",
"rust_bindgen_toolchain",
"rust_bindgen_dependencies",
"rust_bindgen_register_toolchains",
],
),
page(
name = "rust_clippy",
header_template = ":rust_clippy.vm",
symbols = [
"rust_clippy",
"rust_clippy_aspect",
],
),
page(
name = "rust_doc",
symbols = [
"rust_doc",
"rust_doc_test",
],
),
page(
name = "rust_fmt",
header_template = ":rust_fmt.vm",
symbols = [
"rustfmt_aspect",
"rustfmt_test",
"rustfmt_toolchain",
],
),
page(
name = "rust_proto",
header_template = ":rust_proto.vm",
symbols = [
"rust_prost_library",
"rust_prost_toolchain",
"rust_prost_dependencies",
"rust_prost_transitive_repositories",
] + [
"rust_proto_library",
"rust_grpc_library",
"rust_proto_protobuf_toolchain",
"rust_proto_protobuf_dependencies",
"rust_proto_protobuf_register_toolchains",
"rust_proto_protobuf_transitive_repositories",
],
),
page(
name = "rust_repositories",
symbols = [
"rules_rust_dependencies",
"rust_analyzer_toolchain_repository",
"rust_register_toolchains",
"rust_repositories",
"rust_repository_set",
"rust_stdlib_filegroup",
"rust_toolchain_repository_proxy",
"rust_toolchain_repository",
"rust_toolchain_tools_repository",
"rust_toolchain",
],
),
page(
name = "rust_wasm_bindgen",
header_template = ":rust_wasm_bindgen.vm",
symbols = [
"rust_wasm_bindgen_dependencies",
"rust_wasm_bindgen_register_toolchains",
"rust_wasm_bindgen_toolchain",
"rust_wasm_bindgen",
"RustWasmBindgenInfo",
],
),
page(
name = "settings",
symbols = [
"incompatible_flag",
"fail_when_enabled",
],
),
])
# Generate headers for each page
[gen_header(page = p) for p in PAGES.values()]
[
stardoc(
name = "%s_md" % k,
out = "%s.md" % k,
header_template = ":%s_gen_header_vm" % k,
input = ":symbols.bzl",
symbol_names = PAGES[k].symbols,
deps = [":all_docs"],
)
for k in PAGES.keys()
]
genrule(
name = "flatten_header_vm",
outs = ["flatten_header.vm"],
cmd = ">$@ echo '# Rust rules\n\n%s\n'" % "\n".join(
sorted(["* [{rule}](#{rule})".format(rule = v) for k in PAGES.keys() for v in PAGES[k].symbols]),
),
output_to_bindir = True,
)
stardoc(
name = "flatten_md",
out = "flatten.md",
header_template = ":flatten_header_vm",
input = ":symbols.bzl",
symbol_names = sorted([symbol for k in PAGES.keys() for symbol in PAGES[k].symbols]),
deps = [":all_docs"],
)
stardoc(
name = "crate_universe_workspace",
out = "crate_universe.md",
input = "@rules_rust//crate_universe:docs_workspace.bzl",
deps = [":all_docs"],
)
stardoc(
name = "crate_universe_bzlmod",
out = "crate_universe_bzlmod.md",
input = "@rules_rust//crate_universe:docs_bzlmod.bzl",
deps = [":all_docs"],
)
sh_binary(
name = "update_docs",
srcs = ["update_docs.sh"],
)
sh_binary(
name = "test_docs",
srcs = ["test_docs.sh"],
)