| # 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: (str) name of the installer | |
| docs: (label list) list of targets that generate directories to copy | |
| into the directories readthedocs expects final output in. This | |
| is typically a single `sphinx_stardocs` target. | |
| **kwargs: (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 = ["//python/runfiles"], | |
| **kwargs | |
| ) |