Generating Documentation
The following are some examples of how to use Skydoc.
Single Target
Suppose you have a project containing Skylark rules you want to document:
[workspace]/
WORKSPACE
checkstyle/
BUILD
checkstyle.bzl
To generate documentation for the rules and macros in checkstyle.bzl, add the
following target to rules/BUILD:
load("@io_bazel_skydoc//skylark:skylark.bzl", "skylark_doc")
skylark_doc(
name = "checkstyle-docs",
srcs = ["checkstyle.bzl"],
)
Running bazel build //checkstyle:checkstyle-docs will generate a zip file
containing documentation for the public rules and macros in checkstyle.bzl.
By default, Skydoc will generate documentation in Markdown. To generate
a set of HTML pages that is ready to be served, set format = "html".
Multiple Targets
If you would like to generate documentation for multiple .bzl files in various
packages in your workspace, you can use the skylark_library rule to create
logical collections of Skylark sources and add a single skylark_doc target for
building documentation for all of the rule sets.
Suppose your project has the following structure:
[workspace]/
WORKSPACE
BUILD
checkstyle/
BUILD
checkstyle.bzl
lua/
BUILD
lua.bzl
luarocks.bzl
In this case, you can have skylark_library targets in checkstyle/BUILD and
lua/BUILD:
checkstyle/BUILD:
load("@bazel_skylib//:skylark_library.bzl", "skylark_library")
skylark_library(
name = "checkstyle-rules",
srcs = ["checkstyle.bzl"],
)
lua/BUILD:
load("@bazel_skylib//:skylark_library.bzl", "skylark_library")
skylark_library(
name = "lua-rules",
srcs = [
"lua.bzl",
"luarocks.bzl",
],
)
To build documentation for all the above .bzl files at once:
BUILD:
load("@io_bazel_skydoc//skylark:skylark.bzl", "skylark_doc")
skylark_doc(
name = "docs",
srcs = [
"//checkstyle:checkstyle-rules",
"//lua:lua-rules",
],
)
Running bazel build //:docs would build a single zip containing documentation
for all the .bzl files contained in the two skylark_library targets' srcs.