xref: /aosp_15_r20/external/bazelbuild-rules_testing/docs/run_sphinx_build.sh (revision d605057434dcabba796c020773aab68d9790ff9f)
1*d6050574SRomain Jobredeaux#!/bin/bash
2*d6050574SRomain Jobredeaux#
3*d6050574SRomain Jobredeaux# NOTE: This is meant to be run using `bazel run`. Directly running it
4*d6050574SRomain Jobredeaux# won't work.
5*d6050574SRomain Jobredeaux#
6*d6050574SRomain Jobredeaux# Build docs for Sphinx. This is usually run by the readthedocs build process.
7*d6050574SRomain Jobredeaux#
8*d6050574SRomain Jobredeaux# It can also be run locally during development using Bazel, in which case,
9*d6050574SRomain Jobredeaux# it will run Sphinx and start a local webserver to server HTML.
10*d6050574SRomain Jobredeaux#
11*d6050574SRomain Jobredeaux# To make the local devx nicer, run it using ibazel, and it will automatically
12*d6050574SRomain Jobredeaux# update docs:
13*d6050574SRomain Jobredeaux#   ibazel run //docs:run_sphinx_build
14*d6050574SRomain Jobredeaux
15*d6050574SRomain Jobredeauxset -e
16*d6050574SRomain Jobredeaux
17*d6050574SRomain Jobredeauxif [[ -z "$BUILD_WORKSPACE_DIRECTORY" ]]; then
18*d6050574SRomain Jobredeaux  echo "ERROR: Must be run using bazel run"
19*d6050574SRomain Jobredeaux  exit 1
20*d6050574SRomain Jobredeauxfi
21*d6050574SRomain Jobredeaux
22*d6050574SRomain Jobredeauxsphinx=$(pwd)/$1
23*d6050574SRomain Jobredeauxshift
24*d6050574SRomain Jobredeaux
25*d6050574SRomain Jobredeauxcrossrefs=$1
26*d6050574SRomain Jobredeauxshift
27*d6050574SRomain Jobredeaux
28*d6050574SRomain Jobredeauxdest_dir="$BUILD_WORKSPACE_DIRECTORY/docs/source/api"
29*d6050574SRomain Jobredeauxmkdir -p "$dest_dir"
30*d6050574SRomain Jobredeauxfor path in "$@"; do
31*d6050574SRomain Jobredeaux  dest="$dest_dir/$(basename $path)"
32*d6050574SRomain Jobredeaux  if [[ -e $dest ]]; then
33*d6050574SRomain Jobredeaux    chmod +w $dest
34*d6050574SRomain Jobredeaux  fi
35*d6050574SRomain Jobredeaux  cat $path $crossrefs > $dest
36*d6050574SRomain Jobredeauxdone
37*d6050574SRomain Jobredeaux
38*d6050574SRomain Jobredeauxif [[ -z "$READTHEDOCS" ]]; then
39*d6050574SRomain Jobredeaux  sourcedir="$BUILD_WORKSPACE_DIRECTORY/docs/source"
40*d6050574SRomain Jobredeaux  outdir="$BUILD_WORKSPACE_DIRECTORY/docs/_build"
41*d6050574SRomain Jobredeaux  # This avoids stale files or since-deleted files from being processed.
42*d6050574SRomain Jobredeaux  rm -fr "$outdir"
43*d6050574SRomain Jobredeaux  "$sphinx" -T -b html "$sourcedir" "$outdir"
44*d6050574SRomain Jobredeaux
45*d6050574SRomain Jobredeaux  echo "HTML built, to view, run:"
46*d6050574SRomain Jobredeaux  echo "python3 -m http.server --directory $outdir"
47*d6050574SRomain Jobredeaux  python3 -m http.server --directory "$outdir"
48*d6050574SRomain Jobredeauxfi
49