blob: d98be4123231b73398a43c52a2ccc0a574fd3d08 [file] [log] [blame] [view]
# rules_python Sphinx docs generation
The docs for rules_python are generated using a combination of Sphinx, Bazel,
and Readthedocs.org. The Markdown files in source control are unlikely to render
properly without the Sphinx processing step because they rely on Sphinx and
MyST-specific Markdown functionality.
The actual sources that Sphinx consumes are in this directory, with Stardoc
generating additional sources or Sphinx.
Manually building the docs isn't necessary -- readthedocs.org will
automatically build and deploy them when commits are pushed to the repo.
## Generating docs for development
Generating docs for development is a two-part process: starting a local HTTP
server to serve the generated HTML, and re-generating the HTML when sources
change. The quick start is:
```
bazel run //docs:docs.serve # Run in separate terminal
ibazel build //docs:docs # Automatically rebuilds docs
```
This will build the docs and start a local webserver at http://localhost:8000
where you can view the output. As you edit files, ibazel will detect the file
changes and re-run the build process, and you can simply refresh your browser to
see the changes. Using ibazel is not required; you can manually run the
equivalent bazel command if desired.
### Installing ibazel
The `ibazel` tool can be used to automatically rebuild the docs as you
development them. See the [ibazel docs](https://github.com/bazelbuild/bazel-watcher) for
how to install it. The quick start for linux is:
```
sudo apt install npm
sudo npm install -g @bazel/ibazel
```
## MyST Markdown flavor
Sphinx is configured to parse Markdown files using MyST, which is a more
advanced flavor of Markdown that supports most features of restructured text and
integrates with Sphinx functionality such as automatic cross references,
creating indexes, and using concise markup to generate rich documentation.
MyST features and behaviors are controlled by the Sphinx configuration file,
`docs/conf.py`. For more info, see https://myst-parser.readthedocs.io.
## Sphinx configuration
The Sphinx-specific configuration files and input doc files live in
docs/.
The Sphinx configuration is `docs/conf.py`. See
https://www.sphinx-doc.org/ for details about the configuration file.
## Readthedocs configuration
There's two basic parts to the readthedocs configuration:
* `.readthedocs.yaml`: This configuration file controls most settings, such as
the OS version used to build, Python version, dependencies, what Bazel
commands to run, etc.
* https://readthedocs.org/projects/rules-python: This is the project
administration page. While most settings come from the config file, this
controls additional settings such as permissions, what versions are
published, when to publish changes, etc.
For more readthedocs configuration details, see docs.readthedocs.io.