load("@bazel_skylib//:bzl_library.bzl", "bzl_library") load("//python:py_test.bzl", "py_test") load("//python/private:util.bzl", "IS_BAZEL_7_OR_HIGHER") # buildifier: disable=bzl-visibility load("//sphinxdocs:sphinx.bzl", "sphinx_build_binary", "sphinx_docs") load("//sphinxdocs:sphinx_stardoc.bzl", "sphinx_stardoc", "sphinx_stardocs") # We only build for Linux and Mac because: # 1. The actual doc process only runs on Linux # 2. Mac is a common development platform, and is close enough to Linux # it's feasible to make work. # Making CI happy under Windows is too much of a headache, though, so we don't # bother with that. _TARGET_COMPATIBLE_WITH = select({ "@platforms//os:linux": [], "@platforms//os:macos": [], "//conditions:default": ["@platforms//:incompatible"], }) if IS_BAZEL_7_OR_HIGHER else ["@platforms//:incompatible"] sphinx_docs( name = "docs", srcs = glob( include = [ "*.md", ], ), config = "conf.py", formats = [ "html", ], renamed_srcs = { "//sphinxdocs/inventories:bazel_inventory": "bazel_inventory.inv", }, sphinx = ":sphinx-build", strip_prefix = package_name() + "/", target_compatible_with = _TARGET_COMPATIBLE_WITH, deps = [ ":bzl_function", ":bzl_providers", ":simple_bzl_docs", ], ) sphinx_stardocs( name = "simple_bzl_docs", srcs = [":bzl_rule_bzl"], target_compatible_with = _TARGET_COMPATIBLE_WITH, ) sphinx_stardoc( name = "bzl_function", src = ":bzl_function.bzl", target_compatible_with = _TARGET_COMPATIBLE_WITH, deps = [":func_and_providers_bzl"], ) sphinx_stardoc( name = "bzl_providers", src = ":bzl_providers.bzl", prefix = "addprefix_", target_compatible_with = _TARGET_COMPATIBLE_WITH, deps = [":func_and_providers_bzl"], ) # A bzl_library with multiple sources bzl_library( name = "func_and_providers_bzl", srcs = [ "bzl_function.bzl", "bzl_providers.bzl", ], ) bzl_library( name = "bzl_rule_bzl", srcs = ["bzl_rule.bzl"], deps = [":func_and_providers_bzl"], ) sphinx_build_binary( name = "sphinx-build", tags = ["manual"], # Only needed as part of sphinx doc building deps = [ "//sphinxdocs/src/sphinx_bzl", "@dev_pip//myst_parser", "@dev_pip//sphinx", "@dev_pip//typing_extensions", # Needed by sphinx_stardoc ], ) py_test( name = "sphinx_output_test", srcs = ["sphinx_output_test.py"], data = [":docs"], deps = ["@dev_pip//absl_py"], )