| #!/bin/bash |
| # |
| # NOTE: This is meant to be run using `bazel run`. Directly running it |
| # won't work. |
| # |
| # Build docs for Sphinx. This is usually run by the readthedocs build process. |
| # |
| # It can also be run locally during development using Bazel, in which case, |
| # it will run Sphinx and start a local webserver to server HTML. |
| # |
| # To make the local devx nicer, run it using ibazel, and it will automatically |
| # update docs: |
| # ibazel run //docs:run_sphinx_build |
| |
| set -e |
| |
| if [[ -z "$BUILD_WORKSPACE_DIRECTORY" ]]; then |
| echo "ERROR: Must be run using bazel run" |
| exit 1 |
| fi |
| |
| sphinx=$(pwd)/$1 |
| shift |
| |
| crossrefs=$1 |
| shift |
| |
| dest_dir="$BUILD_WORKSPACE_DIRECTORY/docs/source/api" |
| mkdir -p "$dest_dir" |
| for path in "$@"; do |
| dest="$dest_dir/$(basename $path)" |
| if [[ -e $dest ]]; then |
| chmod +w $dest |
| fi |
| cat $path $crossrefs > $dest |
| done |
| |
| if [[ -z "$READTHEDOCS" ]]; then |
| sourcedir="$BUILD_WORKSPACE_DIRECTORY/docs/source" |
| outdir="$BUILD_WORKSPACE_DIRECTORY/docs/_build" |
| # This avoids stale files or since-deleted files from being processed. |
| rm -fr "$outdir" |
| "$sphinx" -T -b html "$sourcedir" "$outdir" |
| |
| echo "HTML built, to view, run:" |
| echo "python3 -m http.server --directory $outdir" |
| python3 -m http.server --directory "$outdir" |
| fi |