| 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." |