| 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//:bzl_lib", |
| "@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"], |
| ) |