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