# Copyright 2023 The Bazel Authors. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Starlark rules for integrating Sphinx and Readthedocs.""" load("//python:py_binary.bzl", "py_binary") load("//python/private:util.bzl", "add_tag") # buildifier: disable=bzl-visibility _INSTALL_MAIN_SRC = Label("//sphinxdocs/private:readthedocs_install.py") def readthedocs_install(name, docs, **kwargs): """Run a program to copy Sphinx doc files into readthedocs output directories. This is intended to be run using `bazel run` during the readthedocs build process when the build process is overridden. See https://docs.readthedocs.io/en/stable/build-customization.html#override-the-build-process for more information. Args: name: {type}`Name` name of the installer docs: {type}`list[label]` list of targets that generate directories to copy into the directories readthedocs expects final output in. This is typically a single {obj}`sphinx_stardocs` target. **kwargs: {type}`dict` additional kwargs to pass onto the installer """ add_tag(kwargs, "@rules_python//sphinxdocs:readthedocs_install") py_binary( name = name, srcs = [_INSTALL_MAIN_SRC], main = _INSTALL_MAIN_SRC, data = docs, args = [ "$(rlocationpaths {})".format(d) for d in docs ], deps = [Label("//python/runfiles")], **kwargs )