--- a +++ b/docs/build_docs.sh @@ -0,0 +1,101 @@ +#!/bin/bash +set -euo pipefail + +# Change to root directory of repo +DIRNAME=$(cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd) +cd "${DIRNAME}/.." + +# # Set up virtual environment +pip3 install setuptools wheel virtualenv +if [ ! -d venv ]; then + rm -f venv + virtualenv venv +fi +source venv/bin/activate + +# # Get current git branch & stash unsaved changes +GIT_BRANCH=$(git branch --show-current) +if [ -z "${GIT_BRANCH}" ]; then + GIT_BRANCH="main" +fi +git stash + +# Set up exit handler to restore git state & delete temp branches +# function exit_handler { +# git reset --hard +# git checkout "${GIT_BRANCH}" -- +# git stash pop || true +# for version in $(git tag --list 'v[0-9]*'); do +# branch="${version}_local_docs_only" +# if git show-ref --verify --quiet "refs/heads/$branch"; then +# git branch -D "$branch" +# fi +# done +# } +# trap exit_handler EXIT + +# Clean up build directory and install Sphinx requirements +pip3 install -r "${DIRNAME}/requirements.txt" +sphinx-build -M clean "${DIRNAME}" "${DIRNAME}/_build" + +# Build API docs for current head +export current_version="latest" +pip3 install "." +sphinx-build -b html "${DIRNAME}" "${DIRNAME}/_build/html/${current_version}" -W --keep-going +rm -rf "${DIRNAME}/_build/html/${current_version}/.doctrees" +#pip3 uninstall -y omnixai + +# Install all previous released versions +# and use them to build the appropriate API docs. +# Uninstall after we're done with each one. +# versions=() +# checkout_files=("${DIRNAME}/*.rst" "lavis" "tutorials" "setup.py") +# for version in $(git tag --list 'v[0-9]*'); do +# versions+=("$version") +# git checkout -b "${version}_local_docs_only" +# for f in $(git diff --name-only --diff-filter=A "tags/${version}" "${DIRNAME}/*.rst"); do +# git rm "$f" +# done +# git checkout "tags/${version}" -- "${checkout_files[@]}" +# export current_version=${version} +# pip3 install ".[all]" +# sphinx-build -b html "${DIRNAME}" "${DIRNAME}/_build/html/${current_version}" -W --keep-going +# rm -rf "${DIRNAME}/_build/html/${current_version}/.doctrees" +# #pip3 uninstall -y omnixai +# git reset --hard +# git checkout "${GIT_BRANCH}" -- +# done + +# Determine the latest stable version if there is one +# if (( ${#versions[@]} > 0 )); then +# stable_hash=$(git rev-list --tags --max-count=1) +# stable_version=$(git describe --tags "$stable_hash") +# export stable_version +# else +export stable_version="latest" +# fi + +# Create dummy HTML's for the stable version in the base directory +while read -r filename; do + filename=$(echo "$filename" | sed "s/\.\///") + n_sub=$(echo "$filename" | (grep -o "/" || true) | wc -l) + prefix="" + for (( i=0; i<n_sub; i++ )); do + prefix+="../" + done + url="${prefix}${stable_version}/$filename" + mkdir -p "${DIRNAME}/_build/html/$(dirname "$filename")" + cat > "${DIRNAME}/_build/html/$filename" <<EOF +<!DOCTYPE html> +<html> + <head> + <title>LAVIS Documentation</title> + <meta http-equiv = "refresh" content="0; url='$url'" /> + </head> + <body> + <p>Please wait while you're redirected to our <a href="$url">documentation</a>.</p> + </body> +</html> +EOF +done < <(cd "${DIRNAME}/_build/html/$stable_version" && find . -name "*.html") +echo "Finished writing to _build/html." \ No newline at end of file