pushsite.bash (30 lines of code) (raw):

#!/usr/bin/env bash set -e savedir=$(pwd) echo 'cloning finatra/gh-pages...' 1>&2 cd /tmp rm -rf finatra-github git clone git@github.com:twitter/finatra.git finatra-github cd finatra-github git checkout gh-pages git pull --force echo 'cleaning gh-pages' git rm -r * echo 'cleaning workspace...' 1>&2 cd $savedir ./sbt clean echo 'making site...' 1>&2 ./sbt --warn site/makeSite echo 'copying site to finatra/gh-pages...' 1>&2 cp -r $savedir/doc/target/site/ /tmp/finatra-github/ >/dev/null 2>&1 echo 'making unidoc...(this may take some time)' 1>&2 cd $savedir ./sbt --warn unidoc echo 'copying unidoc to site...' 1>&2 cd $savedir cp -r $savedir/target/scala-2.12/unidoc/ /tmp/finatra-github/scaladocs >/dev/null 2>&1 # make sure there is a .nojekyll file as we want the reStructuredText user-guide render appropriately in GithubPages touch /tmp/finatra-github/.nojekyll echo 'deploying site...' 1>&2 cd /tmp/finatra-github git add . git diff-index --quiet HEAD || (git commit -am"site push by $(whoami)"; git push origin gh-pages:gh-pages;) echo 'completed!' 1>&2