aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile118
1 files changed, 118 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..06d725c
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,118 @@
+SHELL := bash
+.SHELLFLAGS := -e -o pipefail -c
+.DEFAULT_GOAL := jekyll/serve
+.DELETE_ON_ERROR:
+.SUFFIXES:
+
+makefile_dir := $(dir $(realpath $(firstword $(MAKEFILE_LIST))))
+project_dir := $(dir $(makefile_dir))/..
+
+PREFIX ?= $(HOME)/.local
+
+chruby_version ?= 0.3.9
+chruby_url := https://github.com/postmodern/chruby/archive/v$(chruby_version).tar.gz
+chruby_archive := $(makefile_dir)/chruby-$(chruby_version).tar.gz
+chruby_dir := $(makefile_dir)/chruby-$(chruby_version)
+
+chruby_sh := $(PREFIX)/share/chruby/chruby.sh
+auto_sh := $(PREFIX)/share/chruby/auto.sh
+
+ruby_install_version ?= 0.7.0
+ruby_install_url := https://github.com/postmodern/ruby-install/archive/v$(ruby_install_version).tar.gz
+ruby_install_archive := $(makefile_dir)/ruby-install-$(ruby_install_version).tar.gz
+ruby_install_dir := $(makefile_dir)/ruby-install-$(ruby_install_version)
+
+ruby_version ?= 2.6.5
+
+.PHONY: chruby
+chruby:
+ wget -O '$(chruby_archive)' '$(chruby_url)'
+ tar -xzvf '$(chruby_archive)' -C '$(makefile_dir)'
+ cd -- '$(chruby_dir)' && $(MAKE) install 'PREFIX=$(PREFIX)'
+
+.PHONY: chruby/uninstall
+chruby/uninstall:
+ cd -- '$(chruby_dir)' && $(MAKE) uninstall 'PREFIX=$(PREFIX)'
+
+.PHONY: chruby/clean
+chruby/clean:
+ rm -rf -- '$(chruby_archive)' '$(chruby_dir)'
+
+define chruby_profile_d
+if [ -n "$$BASH_VERSION" ] || [ -n "$$ZSH_VERSION" ]; then
+ [ -r '$(chruby_sh)' ] && source '$(chruby_sh)'
+ [ -r '$(auto_sh)' ] && source '$(auto_sh)'
+fi
+endef
+export chruby_profile_d
+
+.PHONY: chruby/profile.d
+chruby/profile.d:
+ echo "$$chruby_profile_d" > /etc/profile.d/chruby.sh
+
+.PHONY: chruby/profile.d/clean
+chruby/profile.d/clean:
+ rm -f -- /etc/profile.d/chruby.sh
+
+.PHONY: ruby-install
+ruby-install:
+ wget -O '$(ruby_install_archive)' '$(ruby_install_url)'
+ tar -xzvf '$(ruby_install_archive)' -C '$(makefile_dir)'
+ cd -- '$(ruby_install_dir)' && make install 'PREFIX=$(PREFIX)'
+
+.PHONY: ruby-install/uninstall
+ruby-install/uninstall:
+ cd -- '$(ruby_install_dir)' && make uninstall 'PREFIX=$(PREFIX)'
+
+.PHONY: ruby-install/clean
+ruby-install/clean:
+ rm -rf -- '$(ruby_install_archive)' '$(ruby_install_dir)'
+
+.PHONY: ruby
+ruby:
+ ruby-install -j2 --cleanup ruby '$(ruby_version)'
+
+chruby := cd -- '$(project_dir)' && . '$(chruby_sh)' && chruby 'ruby-$(ruby_version)'
+
+.PHONY: bundler
+bundler:
+ $(chruby) && gem install --norc bundler
+
+.PHONY: dependencies
+dependencies:
+ $(chruby) && bundle install --jobs=2 --retry=3
+
+.PHONY: deps
+deps: dependencies
+
+jekyll := $(chruby) && bundle exec jekyll
+
+.PHONY: jekyll/build
+jekyll/build:
+ $(jekyll) build --config _config.yml,_config_dev.yml
+
+.PHONY: jekyll/serve
+jekyll/serve:
+ $(jekyll) serve --host 0.0.0.0 --config _config.yml,_config_dev.yml
+
+docker_compose := cd -- '$(makefile_dir)' && docker-compose
+
+.PHONY: docker/build
+docker/build:
+ $(docker_compose) build --force-rm
+
+.PHONY: docker/up
+docker/up:
+ $(docker_compose) up -d
+
+.PHONY: docker/down
+docker/down:
+ $(docker_compose) down -v
+
+.PHONY: docker/shell
+docker/shell:
+ $(docker_compose) exec serve bash --login
+
+.PHONY: docker/clean
+docker/clean:
+ docker system prune -a -f --volumes