For a while now, I’ve been using make as my task runner for my blog. make run to run locally, make deploy to build and push to GitHub pages.
But… the syntax isn’t great for some things and I’ve been working a lot with Rust. So let’s see what just can do!
In a nutshell, here’s where I am:
LAST_COMMIT := `git log -1 --pretty=%B | head -n 1`
run:
	hugo server --watch --verbose --buildFuture --buildDrafts --bind 0.0.0.0 --port 80
debug:
	hugo server --watch --verbose --buildFuture --buildDrafts --bind 0.0.0.0 --port 80 --debug
import-flickr:
	python3 scripts/flickr.py --generate
review what:
	python3 scripts/review-{{what}}.py
detextbundle path:
	detextbundle \
	--output-root ~/Projects/blog/static \
	--output-assets embeds/books/attachments \
	--output-markdown - \
	--input "{{path}}" | pbcopy
build:
	if [ ! -d public ]; then git clone [email protected]:jpverkamp/jpverkamp.github.io.git public; fi
	cd public; git wipe; git pull --rebase --prune
	#rm -rf public/*
	
	hugo --minify
	cd public; mkdir -p feed; cp atom.xml feed/; cp atom.xml feed/index.html
	cd public; git status
deploy: build
	cd public; git add .
	cd public; git commit -m "Automatic deployment: {{LAST_COMMIT}}"
	cd public; git push origin master
Most of it’s a 1 for 1 conversion. Instead of the previous make files, I instead have just rules. The interesting ones are review what (which takes a param, so that I can say just review book instead of remembering python3 scripts/review-book.py) and detextbundle path which wraps another script I wrote (I’ll have to come back to that) and takes a review written as a TextBundle and pulls it into my blog.
Pretty cool.
Was it necessary? Nope. Neat though. We’ll keep it for the moment.