#! /bin/sh # Deploy the static website. # # Re-generates the static website from source and asserts a clean working tree # before uploading the website to the server. set -o errexit set -o nounset # Git root directory root="$( git rev-parse --show-toplevel )" # Source directory with a trailing slash for rsync src="${root}/_site/" # Git revision rev="$( git rev-parse --verify HEAD )" # ISO 8601 timestamp now="$( date -u "+%Y-%m-%dT%H:%M:%SZ" )" # Archive file name archive="./${now}_${rev}.tar.gz" printf "Re-generating static website from source ...\\n" ( cd "${root}" \ && stack run -- clean >/dev/null 2>&1 \ && stack run -- build >/dev/null 2>&1 ) [ -z "$( git status --porcelain )" ] || { ( >&2 printf "error: dirty working tree\\n" ) printf "Aborting deployment due to unstaged changes or untracked files.\\n" exit 1 } tar -czf "${archive}" "${src}" scp "${archive}" engine.skreutz.com:www-archive/ rsync --rsync-path=openrsync --archive --delete --verbose \ "${src}" "engine.skreutz.com:/var/www/htdocs/www.skreutz.com"