aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--Makefile49
-rw-r--r--prelude.mk23
2 files changed, 72 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..3e49ea6
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,49 @@
+include prelude.mk
+
+LIVE_RELOAD ?= 1
+$(eval $(call noexpand,LIVE_RELOAD))
+
+.PHONY: all
+all: serve
+
+.PHONY: ruby
+ruby:
+ if command -v rbenv &> /dev/null; then rbenv install --skip-existing; fi
+
+.PHONY: deps
+deps: ruby
+ bundle install
+
+jekyll := bundle exec jekyll
+
+.PHONY: build
+build:
+ $(jekyll) build
+
+.PHONY: serve
+serve:
+ifeq ($(LIVE_RELOAD),1)
+ $(jekyll) serve --livereload
+else
+ $(jekyll) serve
+endif
+
+URL := http://localhost:4000/
+
+.PHONY: view
+view:
+ xdg-open '$(call escape,$(URL))' &> /dev/null
+
+REMOTE_USER ?= who
+REMOTE_HOST ?= where
+REMOTE_PORT ?= 22
+REMOTE_DIR ?= /path/to/dir
+
+$(eval $(call noexpand,REMOTE_USER))
+$(eval $(call noexpand,REMOTE_HOST))
+$(eval $(call noexpand,REMOTE_PORT))
+$(eval $(call noexpand,REMOTE_DIR))
+
+.PHONY: deploy
+deploy:
+ rsync -avh -e 'ssh -p $(call escape,$(REMOTE_PORT)) -o StrictHostKeyChecking=no' _site/ '$(call escape,$(REMOTE_USER)@$(REMOTE_HOST):$(REMOTE_DIR)/)' --delete
diff --git a/prelude.mk b/prelude.mk
new file mode 100644
index 0000000..da836d7
--- /dev/null
+++ b/prelude.mk
@@ -0,0 +1,23 @@
+# Please see https://tensin.name/blog/notes/makefile.html
+
+MAKEFLAGS += --no-builtin-rules --no-builtin-variables --warn-undefined-variables
+unexport MAKEFLAGS
+.DEFAULT_GOAL := all
+.DELETE_ON_ERROR:
+.SUFFIXES:
+SHELL := bash
+.SHELLFLAGS := -eu -o pipefail -c
+
+escape = $(subst ','\'',$(1))
+
+define noexpand
+ifeq ($$(origin $(1)),environment)
+ $(1) := $$(value $(1))
+endif
+ifeq ($$(origin $(1)),environment override)
+ $(1) := $$(value $(1))
+endif
+ifeq ($$(origin $(1)),command line)
+ override $(1) := $$(value $(1))
+endif
+endef