From 8cc31bd76af2c92a874fe9c5d4cf09d35c7cb5e4 Mon Sep 17 00:00:00 2001 From: Christian Schwarz Date: Sat, 11 Nov 2017 23:17:17 +0100 Subject: [PATCH] docs: publishing workflow as script --- docs/.gitignore | 1 + docs/conf.py | 5 ++-- docs/publish.sh | 68 +++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 72 insertions(+), 2 deletions(-) create mode 100755 docs/publish.sh diff --git a/docs/.gitignore b/docs/.gitignore index 69fa449..48edc77 100644 --- a/docs/.gitignore +++ b/docs/.gitignore @@ -1 +1,2 @@ _build/ +public_git/ diff --git a/docs/conf.py b/docs/conf.py index 4a0e97a..2ed64c0 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -57,9 +57,10 @@ author = 'Christian Schwarz' # built documents. # # The short X.Y version. -version = '0.0.2' +import subprocess +version = subprocess.check_output(["git", "describe"]).decode("utf-8") # The full version, including alpha/beta/rc tags. -release = '0.0.2' +release = version # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/docs/publish.sh b/docs/publish.sh new file mode 100755 index 0000000..e024016 --- /dev/null +++ b/docs/publish.sh @@ -0,0 +1,68 @@ +#!/bin/bash +set -eo pipefail + +GHPAGESREPO="git@github.com:zrepl/zrepl.github.io.git" +SCRIPTDIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) +PUBLICDIR="${SCRIPTDIR}/public_git" + +checkout_repo_msg() { + echo "clone ${GHPAGESREPO} to ${PUBLICDIR}:" + echo " git clone ${GHPAGESREPO} ${PUBLICDIR}" + git clone "${GHPAGESREPO}" "${PUBLICDIR}" +} + +exit_msg() { + echo "error, exiting..." +} +trap exit_msg EXIT + +cd "$SCRIPTDIR" + +if [ ! -d "$PUBLICDIR" ]; then + checkout_repo_msg + exit 1 +fi + +echo -n "PRESS ENTER to confirm you commited the docs changes to the zrepl repo" +read + +pushd "$PUBLICDIR" + +echo "verify we're in the GitHub pages repo..." +git remote get-url origin | grep -E "^${GHPAGESREPO}\$" +if [ "$?" -ne "0" ] ;then + checkout_repo_msg + echo "finished checkout, please run again" + exit 1 +fi + +echo "resetting GitHub pages repo to latest commit" +git fetch origin +git reset --hard origin/master + +echo "cleaning GitHub pages repo" +git rm -rf . + +popd + +echo "building site" +set -e +make clean +make html +rsync -a _build/html/ public_git/ +set +e + +CURRENT_COMMIT=$(git rev-parse HEAD) +git status --porcelain +if [[ "$(git status --porcelain)" != "" ]]; then + CURRENT_COMMIT="${CURRENT_COMMIT}(dirty)" +fi +COMMIT_MSG="sphinx render from publish.sh - `date -u` - ${CURRENT_COMMIT}" + +pushd "$PUBLICDIR" + +echo "adding and commiting all changes in GitHub pages repo" +git add -A +git commit -m "$COMMIT_MSG" +#git push origin master +