[Discovery] A conveniant setup with hakyll on github

Posted on February 22, 2020

Maybe a bash script is good enough?

#!/bin/bash
stack exec dz build
git add -A
git commit -m "$1"
git push origin -u HEAD
git checkout master
cp -a _site/. .
git add -A
git commit -m "Publish $2"
git push origin -u HEAD

Happy path for days! I don’t like it but it kind of works.

Some guards should help.

#!/bin/bash

set -axe

if [ $# -ne 1 ] && [ $# -ne 2 ]; then
  echo 1>&2 "Usage: $0 <develop message> <publish message>"
  exit 3
fi

stack clean
stack build
stack exec dz clean
stack exec dz build

git add -A
git commit -m "$1"
git push origin -u HEAD
if [ $? -eq 0 ]; then
  git checkout master
  rm -rf index.html archive.html posts css
  cp -a _site/. .
  git add -A
  git commit -m "$2"
  git push origin -u HEAD
  git checkout develop
else
  echo 1>&2 "Did not push to develop, stopping."
  exit 3
fi

rm -rf index.html archive.html posts css seeems very flimsy but for now it works. Win!