blob: 2aaefb7938e19ec3f59a5f2fe38faad9d918b8a8 [file] [log] [blame]
Brian Silvermancc09f182022-03-09 15:40:20 -08001load("@bazel_skylib//:bzl_library.bzl", "bzl_library")
2load("@io_bazel_stardoc//stardoc:stardoc.bzl", "stardoc")
3load("//:page.bzl", "gen_header", "page")
4
5package(default_visibility = ["//visibility:private"])
6
7bzl_library(
8 name = "docs_deps",
9 srcs = [
10 "@bazel_tools//tools:bzl_srcs",
Brian Silvermancc09f182022-03-09 15:40:20 -080011 "@com_google_protobuf//:bzl_srcs",
Brian Silverman5f6f2762022-08-13 19:30:05 -070012 "@rules_nodejs//nodejs:bzl",
Brian Silvermancc09f182022-03-09 15:40:20 -080013 ],
14 deps = [
15 "@bazel_skylib//lib:paths",
Brian Silverman5f6f2762022-08-13 19:30:05 -070016 "@bazel_skylib//lib:selects",
Brian Silvermancc09f182022-03-09 15:40:20 -080017 "@bazel_skylib//rules:common_settings",
18 "@rules_proto//proto:defs",
19 "@rules_proto//proto:repositories",
20 ],
21)
22
23bzl_library(
24 name = "all_docs",
25 deps = [
26 ":docs_deps",
27 "@rules_rust//:bzl_lib",
28 "@rules_rust//bindgen:bzl_lib",
29 "@rules_rust//cargo:bzl_lib",
30 "@rules_rust//crate_universe:bzl_lib",
31 "@rules_rust//proto:bzl_lib",
32 "@rules_rust//rust:bzl_lib",
33 "@rules_rust//wasm_bindgen:bzl_lib",
34 ],
35)
36
37PAGES = dict([
38 page(
39 name = "cargo",
40 symbols = [
41 "cargo_bootstrap_repository",
42 "cargo_build_script",
Adam Snaider1c095c92023-07-08 02:09:58 -040043 "cargo_dep_env",
Brian Silvermancc09f182022-03-09 15:40:20 -080044 "cargo_env",
45 ],
46 ),
47 page(
48 name = "defs",
49 symbols = [
50 "rust_binary",
51 "rust_library",
Adam Snaider1c095c92023-07-08 02:09:58 -040052 "rust_library_group",
Brian Silvermancc09f182022-03-09 15:40:20 -080053 "rust_static_library",
54 "rust_shared_library",
55 "rust_proc_macro",
56 "rust_test",
57 "rust_test_suite",
58 "error_format",
Brian Silverman5f6f2762022-08-13 19:30:05 -070059 "extra_rustc_flag",
Brian Silvermancc09f182022-03-09 15:40:20 -080060 "extra_rustc_flags",
61 "capture_clippy_output",
62 ],
63 ),
64 page(
65 name = "providers",
66 symbols = [
67 "CrateInfo",
68 "DepInfo",
69 "StdLibInfo",
70 ],
71 ),
72 page(
73 name = "rust_analyzer",
74 header_template = ":rust_analyzer.vm",
75 symbols = [
Brian Silvermancc09f182022-03-09 15:40:20 -080076 "rust_analyzer_aspect",
Brian Silverman5f6f2762022-08-13 19:30:05 -070077 "rust_analyzer_toolchain",
Brian Silvermancc09f182022-03-09 15:40:20 -080078 ],
79 ),
80 page(
81 name = "rust_bindgen",
Brian Silverman5f6f2762022-08-13 19:30:05 -070082 header_template = ":rust_bindgen.vm",
Brian Silvermancc09f182022-03-09 15:40:20 -080083 symbols = [
84 "rust_bindgen_library",
Adam Snaider1c095c92023-07-08 02:09:58 -040085 "rust_bindgen",
86 "rust_bindgen_toolchain",
Brian Silverman5f6f2762022-08-13 19:30:05 -070087 "rust_bindgen_dependencies",
88 "rust_bindgen_register_toolchains",
Brian Silvermancc09f182022-03-09 15:40:20 -080089 ],
90 ),
91 page(
92 name = "rust_clippy",
93 header_template = ":rust_clippy.vm",
94 symbols = [
95 "rust_clippy",
96 "rust_clippy_aspect",
97 ],
98 ),
99 page(
100 name = "rust_doc",
101 symbols = [
102 "rust_doc",
103 "rust_doc_test",
104 ],
105 ),
106 page(
107 name = "rust_fmt",
108 header_template = ":rust_fmt.vm",
109 symbols = [
110 "rustfmt_aspect",
111 "rustfmt_test",
Adam Snaider1c095c92023-07-08 02:09:58 -0400112 "rustfmt_toolchain",
Brian Silvermancc09f182022-03-09 15:40:20 -0800113 ],
114 ),
115 page(
116 name = "rust_proto",
117 header_template = ":rust_proto.vm",
118 symbols = [
119 "rust_grpc_library",
120 "rust_proto_library",
Adam Snaider1c095c92023-07-08 02:09:58 -0400121 "rust_proto_dependencies",
Brian Silvermancc09f182022-03-09 15:40:20 -0800122 "rust_proto_transitive_repositories",
123 "rust_proto_toolchain",
Adam Snaider1c095c92023-07-08 02:09:58 -0400124 "rust_prost_library",
Brian Silvermancc09f182022-03-09 15:40:20 -0800125 ],
126 ),
127 page(
128 name = "rust_repositories",
129 symbols = [
130 "rules_rust_dependencies",
Adam Snaider1c095c92023-07-08 02:09:58 -0400131 "rust_analyzer_toolchain_repository",
Brian Silvermancc09f182022-03-09 15:40:20 -0800132 "rust_register_toolchains",
133 "rust_repositories",
134 "rust_repository_set",
135 "rust_stdlib_filegroup",
136 "rust_toolchain_repository_proxy",
137 "rust_toolchain_repository",
Brian Silverman5f6f2762022-08-13 19:30:05 -0700138 "rust_toolchain_tools_repository",
Brian Silvermancc09f182022-03-09 15:40:20 -0800139 "rust_toolchain",
140 ],
141 ),
142 page(
143 name = "rust_wasm_bindgen",
144 header_template = ":rust_wasm_bindgen.vm",
145 symbols = [
Brian Silverman5f6f2762022-08-13 19:30:05 -0700146 "rust_wasm_bindgen_dependencies",
147 "rust_wasm_bindgen_register_toolchains",
Brian Silvermancc09f182022-03-09 15:40:20 -0800148 "rust_wasm_bindgen_toolchain",
149 "rust_wasm_bindgen",
150 ],
151 ),
152 page(
153 name = "settings",
154 symbols = [
155 "incompatible_flag",
156 "fail_when_enabled",
157 ],
158 ),
159])
160
161# Generate headers for each page
162[gen_header(page = p) for p in PAGES.values()]
163
164[
165 stardoc(
166 name = "%s_md" % k,
167 out = "%s.md" % k,
168 header_template = ":%s_gen_header_vm" % k,
169 input = ":symbols.bzl",
170 symbol_names = PAGES[k].symbols,
171 deps = [":all_docs"],
172 )
173 for k in PAGES.keys()
174]
175
176genrule(
177 name = "flatten_header_vm",
178 outs = ["flatten_header.vm"],
179 cmd = ">$@ echo '# Rust rules\n\n%s\n'" % "\n".join(
180 sorted(["* [{rule}](#{rule})".format(rule = v) for k in PAGES.keys() for v in PAGES[k].symbols]),
181 ),
182 output_to_bindir = True,
183)
184
185stardoc(
186 name = "flatten_md",
187 out = "flatten.md",
188 header_template = ":flatten_header_vm",
189 input = ":symbols.bzl",
190 symbol_names = sorted([symbol for k in PAGES.keys() for symbol in PAGES[k].symbols]),
191 deps = [":all_docs"],
192)
193
194stardoc(
195 name = "crate_universe",
196 out = "crate_universe.md",
Brian Silverman5f6f2762022-08-13 19:30:05 -0700197 input = "@rules_rust//crate_universe:docs.bzl",
Brian Silvermancc09f182022-03-09 15:40:20 -0800198 deps = [":all_docs"],
199)
200
201sh_binary(
202 name = "update_docs",
203 srcs = ["update_docs.sh"],
204)
205
206sh_binary(
207 name = "test_docs",
208 srcs = ["test_docs.sh"],
209)