app_name := haskell-cron-matcher 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}" \ fpco/stack-build:lts-15.16 hfmt := docker run \ --rm \ --tty \ --init \ --user "${uid}:${gid}" \ --volume "${PWD}:${container_work_dir}" \ --workdir "${container_work_dir}" \ anwinged/hfmt:master # Targets .PHONY: build build: mkdir -p .stack-work ${stack} stack build .PHONY: test test: mkdir -p .stack-work ${stack} stack test .PHONY: test-with-coverage test-with-coverage: mkdir -p .stack-work ${stack} stack test --coverage .PHONY: format format: ${hfmt} -w app/ src/ test/