rules_rust_mdbook

Bazel rules for mdBook.

Rules

Setup

bazel_dep(name = "rules_rust_mdbook", version = "{SEE_RELEASE_NOTES}")


mdbook

load("@rules_rust_mdbook//:defs.bzl", "mdbook")

mdbook(name, srcs, book, plugins)

Rules to create book from markdown files using mdBook.

ATTRIBUTES

NameDescriptionTypeMandatoryDefault
nameA unique name for this target.Namerequired
srcsAll inputs to the book.List of labelsoptional[]
bookThe book.toml file.Labelrequired
pluginsExecutables to inject into PATH for use in preprocessor commands.List of labelsoptional[]

mdbook_server

load("@rules_rust_mdbook//:defs.bzl", "mdbook_server")

mdbook_server(name, book, hostname, port)

Spawn an mdbook server for a given mdbook target.

The server stages every input (including generated sources) into an isolated working directory before invoking mdbook serve, so the running book always reflects the bazel-built sources rather than the workspace checkout.

For live-reload during development, add tags = ["ibazel_notify_changes"] and invoke with ibazel:

mdbook_server(
    name = "book_server",
    book = ":book",
    tags = ["ibazel_notify_changes"],
)
ibazel run //path/to:book_server

ibazel will rebuild on source changes and signal the running server via stdin; the server re-stages the freshly built inputs and mdbook serve reloads any connected browsers.

ATTRIBUTES

NameDescriptionTypeMandatoryDefault
nameA unique name for this target.Namerequired
bookThe mdbook target to serve.Labelrequired
hostnameThe default hostname to use (Can be overridden on the command line).Stringoptional"localhost"
portThe default port to use (Can be overridden on the command line).Stringoptional"3000"

mdbook_toolchain

load("@rules_rust_mdbook//:defs.bzl", "mdbook_toolchain")

mdbook_toolchain(name, mdbook, plugins)

A mdBook toolchain.

ATTRIBUTES

NameDescriptionTypeMandatoryDefault
nameA unique name for this target.Namerequired
mdbookA mdBook binary.Labelrequired
pluginsExecutables to inject into PATH for use in preprocessor commands.List of labelsoptional[]