#!/bin/bash

# Any individual commands that fail will cause the script to exit
set -e

BRANCH=`git branch | sed -n -e 's/^\* \(.*\)/\1/p'`

make docs

# Initialize a blank branch or change to the existing one
# Exit if all fail as a precautionary measure to not trash
# the current branch
git fetch origin
git checkout --orphan gh-pages || git checkout -f gh-pages || exit 1

# Go back to the original branch. Set this as a trap to happen if any
# errors occur
function clean_up() {
   git checkout -f $BRANCH 
}
trap clean_up EXIT

# Start docs from scratch
git ls-files | xargs rm -f
git add -u

# The .nojekyll file prevents github from parsing docs as jekyll format
touch .nojekyll

# Move doc files into root dir, add them, and push them. Exlude hidden
# files and the dot folder
DOC_FILES=`cd docs/_build/html && find . -not -path '*/\.*' -not -path .`
cp -r docs/_build/html/* .
git add -f .nojekyll $DOC_FILES
git commit -m "Published docs" --allow-empty
git push origin gh-pages --force

# Remove the trap and exit normally
trap - EXIT
clean_up
exit 0