app_name := haskell-cron-matcher image := ${app_name}-stack container_work_dir := /app cache_dir := ${container_work_dir}/.stack-work uid := $(shell id -u) gid := $(shell id -g) stack := docker run \ --rm \ --tty \ --init \ --user "${uid}:${gid}" \ --volume "${PWD}:${container_work_dir}" \ --env "STACK_ROOT=${cache_dir}" \ --workdir "${container_work_dir}" \ ${image} # Targets .PHONY: build-docker build-docker: docker build --tag=${image} . ${stack} stack --system-ghc --local-bin-path=./.local install hindent hfmt .PHONY: build build: ${stack} stack build .PHONY: test test: ${stack} stack test .PHONY: format format: ${stack} .local/hfmt -w app/ src/ test/