#!/usr/bin/env bash set -eo pipefail prepare_docs_log() { echo "[prepare docs release] -- $@" } # Only run for tagged commits if [ -z "$(git tag -l --points-at HEAD)" ]; then prepare_docs_log "Skipping non-tagged commit." exit 0 fi DOCS_DIR="./docs" DIST_DIR="./dist/docs" BRANCHES_DIR="${DIST_DIR}/branches" API_SPEC_FILE="${DOCS_DIR}/openapi.yaml" redoc_bundle_file=$(mktemp) git_ref_version=$(git describe --always) branch_docs_dir="${BRANCHES_DIR}/${git_ref_version}" # Build Redoc bundle (a single HTML file) redoc-cli bundle ${API_SPEC_FILE} -o ${redoc_bundle_file} # Check out current stuff from gh-pages (we'll append to it) git fetch origin 'refs/heads/gh-pages:refs/heads/gh-pages' git checkout gh-pages -- docs # Create the docs bundle for our ref. This will be the redoc bundle + a # snapshot of the OpenAPI spec mkdir -p "${branch_docs_dir}" cp "${API_SPEC_FILE}" "${branch_docs_dir}" cp "${redoc_bundle_file}" "${branch_docs_dir}/index.html" # Create a JSON file containing a list of all branches with docs (we'll # have an index page that renders the list). ls "${BRANCHES_DIR}" | jq -Rc '.' | jq -sc '.' > "${DIST_DIR}/branches.json"