xref: /aosp_15_r20/external/bazelbuild-rules_license/doc_build/BUILD (revision f578df4fd057ffe2023728444759535685631548)
1*f578df4fSJingwen Chen# Copyright 2022 The Bazel Authors. All rights reserved.
2*f578df4fSJingwen Chen#
3*f578df4fSJingwen Chen# Licensed under the Apache License, Version 2.0 (the "License");
4*f578df4fSJingwen Chen# you may not use this file except in compliance with the License.
5*f578df4fSJingwen Chen# You may obtain a copy of the License at
6*f578df4fSJingwen Chen#
7*f578df4fSJingwen Chen#    http://www.apache.org/licenses/LICENSE-2.0
8*f578df4fSJingwen Chen#
9*f578df4fSJingwen Chen# Unless required by applicable law or agreed to in writing, software
10*f578df4fSJingwen Chen# distributed under the License is distributed on an "AS IS" BASIS,
11*f578df4fSJingwen Chen# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*f578df4fSJingwen Chen# See the License for the specific language governing permissions and
13*f578df4fSJingwen Chen# limitations under the License.
14*f578df4fSJingwen Chen"""Generate the reference documentation.
15*f578df4fSJingwen Chen
16*f578df4fSJingwen ChenHow to:
17*f578df4fSJingwen Chen   bazel build //doc_build:reference
18*f578df4fSJingwen Chen   cp bazel-bin/doc_build/reference.md docs/latest.md
19*f578df4fSJingwen Chen   git commit -m 'update docs' docs/latest.md
20*f578df4fSJingwen Chen"""
21*f578df4fSJingwen Chen
22*f578df4fSJingwen Chenload("@bazel_skylib//:bzl_library.bzl", "bzl_library")
23*f578df4fSJingwen Chenload("@io_bazel_stardoc//stardoc:stardoc.bzl", "stardoc")
24*f578df4fSJingwen Chenload("@rules_python//python:defs.bzl", "py_library")
25*f578df4fSJingwen Chenload("//:version.bzl", "version")
26*f578df4fSJingwen Chen
27*f578df4fSJingwen Chenpackage(default_package_metadata = ["//:license", "//:package_info"])
28*f578df4fSJingwen Chen
29*f578df4fSJingwen Chenfilegroup(
30*f578df4fSJingwen Chen    name = "standard_package",
31*f578df4fSJingwen Chen    srcs = [
32*f578df4fSJingwen Chen        "BUILD",
33*f578df4fSJingwen Chen    ] + glob([
34*f578df4fSJingwen Chen        "*.bzl",
35*f578df4fSJingwen Chen        "*.py",
36*f578df4fSJingwen Chen    ]),
37*f578df4fSJingwen Chen    visibility = ["//distro:__pkg__"],
38*f578df4fSJingwen Chen)
39*f578df4fSJingwen Chen
40*f578df4fSJingwen Chenexports_files(
41*f578df4fSJingwen Chen    glob([
42*f578df4fSJingwen Chen        "*.bzl",
43*f578df4fSJingwen Chen    ]),
44*f578df4fSJingwen Chen    visibility = [
45*f578df4fSJingwen Chen        "//distro:__pkg__",
46*f578df4fSJingwen Chen    ],
47*f578df4fSJingwen Chen)
48*f578df4fSJingwen Chen
49*f578df4fSJingwen Chen# pairs of rule name and the source file to get it from
50*f578df4fSJingwen Chen# Must put macro wrapped rules after their wrapper
51*f578df4fSJingwen Chen# buildifier: leave-alone, do not sort
52*f578df4fSJingwen ChenORDER = [
53*f578df4fSJingwen Chen    ("license",         "//rules:license.bzl"),
54*f578df4fSJingwen Chen    ("_license",        "//rules:license.bzl"),
55*f578df4fSJingwen Chen    ("license_kind",    "//rules:license_kind.bzl"),
56*f578df4fSJingwen Chen    ("_license_kind",   "//rules:license_kind.bzl"),
57*f578df4fSJingwen Chen    ("package_info",    "//rules:package_info.bzl"),
58*f578df4fSJingwen Chen    ("_package_info",   "//rules:package_info.bzl"),
59*f578df4fSJingwen Chen    ("LicenseInfo",     "//rules:providers.bzl"),
60*f578df4fSJingwen Chen    ("LicenseKindInfo", "//rules:providers.bzl"),
61*f578df4fSJingwen Chen    ("PackageInfo",     "//rules:providers.bzl"),
62*f578df4fSJingwen Chen]
63*f578df4fSJingwen Chen
64*f578df4fSJingwen Chengenrule(
65*f578df4fSJingwen Chen    name = "reference",
66*f578df4fSJingwen Chen    srcs = ["%s.md" % rule for rule, _ in ORDER],
67*f578df4fSJingwen Chen    outs = ["reference.md"],
68*f578df4fSJingwen Chen    cmd = "$(location :merge) $(SRCS) >$@",
69*f578df4fSJingwen Chen    tools = [":merge"],
70*f578df4fSJingwen Chen)
71*f578df4fSJingwen Chen
72*f578df4fSJingwen Chen[
73*f578df4fSJingwen Chen    stardoc(
74*f578df4fSJingwen Chen        name = "%s_gen" % rule,
75*f578df4fSJingwen Chen        out = "%s.md" % rule,
76*f578df4fSJingwen Chen        input = src,
77*f578df4fSJingwen Chen        symbol_names = [
78*f578df4fSJingwen Chen            rule,
79*f578df4fSJingwen Chen        ],
80*f578df4fSJingwen Chen        deps = [":lib_of_everything"],
81*f578df4fSJingwen Chen    )
82*f578df4fSJingwen Chen    for rule, src in ORDER
83*f578df4fSJingwen Chen    if src
84*f578df4fSJingwen Chen]
85*f578df4fSJingwen Chen
86*f578df4fSJingwen Chen# gather all rules that should be documented
87*f578df4fSJingwen Chenbzl_library(
88*f578df4fSJingwen Chen    name = "lib_of_everything",
89*f578df4fSJingwen Chen    srcs = [
90*f578df4fSJingwen Chen        "//:version.bzl",
91*f578df4fSJingwen Chen        "//rules:standard_package",
92*f578df4fSJingwen Chen        "//rules/private:standard_package",
93*f578df4fSJingwen Chen        # "@bazel_skylib//lib:paths",
94*f578df4fSJingwen Chen    ],
95*f578df4fSJingwen Chen    visibility = ["//visibility:public"],
96*f578df4fSJingwen Chen)
97*f578df4fSJingwen Chen
98*f578df4fSJingwen Chen# This is experimental. We are waiting for stardoc to get the features which
99*f578df4fSJingwen Chen# are done in merge.
100*f578df4fSJingwen Chenpy_binary(
101*f578df4fSJingwen Chen    name = "merge",
102*f578df4fSJingwen Chen    srcs = ["merge.py"],
103*f578df4fSJingwen Chen    python_version = "PY3",
104*f578df4fSJingwen Chen    srcs_version = "PY3",
105*f578df4fSJingwen Chen    visibility = ["//visibility:private"],
106*f578df4fSJingwen Chen)
107