blob: 6c7e39cb131f849fae960beb6c8e3aa2f98a98c9 [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",
11 "@build_bazel_rules_nodejs//:bzl",
12 "@com_google_protobuf//:bzl_srcs",
13 ],
14 deps = [
15 "@bazel_skylib//lib:paths",
16 "@bazel_skylib//rules:common_settings",
17 "@rules_proto//proto:defs",
18 "@rules_proto//proto:repositories",
19 ],
20)
21
22bzl_library(
23 name = "all_docs",
24 deps = [
25 ":docs_deps",
26 "@rules_rust//:bzl_lib",
27 "@rules_rust//bindgen:bzl_lib",
28 "@rules_rust//cargo:bzl_lib",
29 "@rules_rust//crate_universe:bzl_lib",
30 "@rules_rust//proto:bzl_lib",
31 "@rules_rust//rust:bzl_lib",
32 "@rules_rust//wasm_bindgen:bzl_lib",
33 ],
34)
35
36PAGES = dict([
37 page(
38 name = "cargo",
39 symbols = [
40 "cargo_bootstrap_repository",
41 "cargo_build_script",
42 "cargo_env",
43 ],
44 ),
45 page(
46 name = "defs",
47 symbols = [
48 "rust_binary",
49 "rust_library",
50 "rust_static_library",
51 "rust_shared_library",
52 "rust_proc_macro",
53 "rust_test",
54 "rust_test_suite",
55 "error_format",
56 "extra_rustc_flags",
57 "capture_clippy_output",
58 ],
59 ),
60 page(
61 name = "providers",
62 symbols = [
63 "CrateInfo",
64 "DepInfo",
65 "StdLibInfo",
66 ],
67 ),
68 page(
69 name = "rust_analyzer",
70 header_template = ":rust_analyzer.vm",
71 symbols = [
72 "rust_analyzer",
73 "rust_analyzer_aspect",
74 ],
75 ),
76 page(
77 name = "rust_bindgen",
78 symbols = [
79 "rust_bindgen_library",
80 "rust_bindgen_repositories",
81 "rust_bindgen_toolchain",
82 "rust_bindgen",
83 ],
84 ),
85 page(
86 name = "rust_clippy",
87 header_template = ":rust_clippy.vm",
88 symbols = [
89 "rust_clippy",
90 "rust_clippy_aspect",
91 ],
92 ),
93 page(
94 name = "rust_doc",
95 symbols = [
96 "rust_doc",
97 "rust_doc_test",
98 ],
99 ),
100 page(
101 name = "rust_fmt",
102 header_template = ":rust_fmt.vm",
103 symbols = [
104 "rustfmt_aspect",
105 "rustfmt_test",
106 ],
107 ),
108 page(
109 name = "rust_proto",
110 header_template = ":rust_proto.vm",
111 symbols = [
112 "rust_grpc_library",
113 "rust_proto_library",
114 "rust_proto_repositories",
115 "rust_proto_transitive_repositories",
116 "rust_proto_toolchain",
117 ],
118 ),
119 page(
120 name = "rust_repositories",
121 symbols = [
122 "rules_rust_dependencies",
123 "rust_register_toolchains",
124 "rust_repositories",
125 "rust_repository_set",
126 "rust_stdlib_filegroup",
127 "rust_toolchain_repository_proxy",
128 "rust_toolchain_repository",
129 "rust_toolchain",
130 ],
131 ),
132 page(
133 name = "rust_wasm_bindgen",
134 header_template = ":rust_wasm_bindgen.vm",
135 symbols = [
136 "rust_wasm_bindgen_repositories",
137 "rust_wasm_bindgen_toolchain",
138 "rust_wasm_bindgen",
139 ],
140 ),
141 page(
142 name = "settings",
143 symbols = [
144 "incompatible_flag",
145 "fail_when_enabled",
146 ],
147 ),
148])
149
150# Generate headers for each page
151[gen_header(page = p) for p in PAGES.values()]
152
153[
154 stardoc(
155 name = "%s_md" % k,
156 out = "%s.md" % k,
157 header_template = ":%s_gen_header_vm" % k,
158 input = ":symbols.bzl",
159 symbol_names = PAGES[k].symbols,
160 deps = [":all_docs"],
161 )
162 for k in PAGES.keys()
163]
164
165genrule(
166 name = "flatten_header_vm",
167 outs = ["flatten_header.vm"],
168 cmd = ">$@ echo '# Rust rules\n\n%s\n'" % "\n".join(
169 sorted(["* [{rule}](#{rule})".format(rule = v) for k in PAGES.keys() for v in PAGES[k].symbols]),
170 ),
171 output_to_bindir = True,
172)
173
174stardoc(
175 name = "flatten_md",
176 out = "flatten.md",
177 header_template = ":flatten_header_vm",
178 input = ":symbols.bzl",
179 symbol_names = sorted([symbol for k in PAGES.keys() for symbol in PAGES[k].symbols]),
180 deps = [":all_docs"],
181)
182
183stardoc(
184 name = "crate_universe",
185 out = "crate_universe.md",
186 input = "@rules_rust//crate_universe:defs.bzl",
187 deps = [":all_docs"],
188)
189
190sh_binary(
191 name = "update_docs",
192 srcs = ["update_docs.sh"],
193)
194
195sh_binary(
196 name = "test_docs",
197 srcs = ["test_docs.sh"],
198)