sof/scripts/gen-doc.sh

136 lines
2.8 KiB
Bash
Raw Normal View History

#!/bin/bash
# SPDX-License-Identifier: BSD-3-Clause
# Copyright(c) 2019 Intel Corporation. All rights reserved.
# SOF documentation building & publishing.
# According to instructions:
# https://thesofproject.github.io/latest/howtos/process/docbuild.html
# fail immediately on any errors
set -e
function print_usage()
{
echo "usage: $0 <-b|-c|-p> [-r]"
echo " [-b] Build"
echo " [-c] Clean"
echo " [-p] Publish"
echo " [-r] Fetch missing repositories"
}
# make it runnable from any location
# user shouldn't be confused from which dir this script has to be run
SCRIPT_DIR=$(cd "$(dirname "$0")" && pwd)
# expected paths of repositories needed for documentation process
SOF_REPO=$(dirname "$SCRIPT_DIR")
DOCS_REPO="$(dirname "$SOF_REPO")/sof-docs"
PUBLISH_REPO="$(dirname "$SOF_REPO")/thesofproject.github.io"
# parse arguments
DO_BUILD=false
DO_CLEAN=false
DO_PUBLISH=false
DO_FETCH=false
while getopts "bcpr" OPTION; do
case "$OPTION" in
b) DO_BUILD=true ;;
c) DO_CLEAN=true ;;
p) DO_PUBLISH=true ;;
r) DO_FETCH=true ;;
*) print_usage; exit 1 ;;
esac
done
shift "$(($OPTIND - 1))"
if ! { "$DO_BUILD" || "$DO_CLEAN" || "$DO_PUBLISH"; }
then
print_usage
exit 1
fi
if [ ! -d "$DOCS_REPO" ]
then
if "$DO_FETCH"
then
echo "No sof-docs repo at: $DOCS_REPO"
echo "Cloning sof-docs repo"
read -p 'Enter your GitHub user name: ' GITHUB_USER
git clone \
git@github.com:$GITHUB_USER/sof-docs.git \
"$DOCS_REPO"
# set up fork for upstreaming, just like in instructions
cd "$DOCS_REPO"
git remote add upstream git@github.com:thesofproject/sof-docs.git
else
echo "Error: No sof-docs repo at: $DOCS_REPO"
echo "You can rerun the script with -r argument to fetch missing repositories:"
echo "Example: $0 $@ -r"
exit 1
fi
fi
cd "$SOF_REPO/doc"
if "$DO_CLEAN"
then
echo "Cleaning $SOF_REPO"
cmake .
make clean
make doc-clean
fi
if "$DO_BUILD"
then
echo "Building $SOF_REPO"
cmake .
make doc
fi
cd "$DOCS_REPO"
if "$DO_CLEAN"
then
echo "Cleaning $DOCS_REPO"
make clean
fi
if "$DO_BUILD"
then
echo "Building $DOCS_REPO"
make html
echo "Documentation build finished"
echo "It can be viewed at: $DOCS_REPO/_build/html/index.html"
fi
if "$DO_PUBLISH"
then
if [ ! -d "$PUBLISH_REPO" ]
then
if "$DO_FETCH"
then
echo "No publishing repo at: $PUBLISH_REPO"
echo "Cloning thesofproject.github.io.git repo"
git clone \
git@github.com:thesofproject/thesofproject.github.io.git \
"$PUBLISH_REPO"
else
echo "Error: No publishing repo at: $PUBLISH_REPO"
echo "You can rerun the script with -r argument to fetch missing repositories:"
echo "Example: $0 $@ -r"
exit 1
fi
fi
echo "Publishing $PUBLISH_REPO"
cd "$DOCS_REPO"
make publish
fi