diff options
-rw-r--r-- | Makefile | 49 | ||||
-rw-r--r-- | prelude.mk | 23 |
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 |