CMD?=
WD?=

PROJECTFILES=$(shell ls -1 *.ex{s,}) $(shell find lib src test -type f)
.PHONY: run base bind recache doc

base: .make/base
build: .make/build

run: .make/build
	docker run -it erlambda $(CMD)

bind: .make/base
	docker run -it --mount type=bind,source=$(shell pwd),target=/bind elixirbase sh -ec "cd /bind/$(WD); $(CMD)"

recache:
	rm .make/cache .make/build
	make .make/cache

doc: .make/build $(PROJECTFILES)
	docker run -it --mount type=bind,source=$(shell pwd),target=/bind erlambda sh -ec "mix docs; cp -rf /<%= @app %>/doc /bind/doc"

.make/build: .make/cache Dockerfile $(PROJECTFILES)
	docker build -t erlambda .
	date > .make/build

.make/base: .make images/base.Dockerfile
	docker build -t elixirbase -f $(shell pwd)/images/base.Dockerfile .
	date > .make/base

.make:
	mkdir -p .make

.make/cache: .make/base images/cache.Dockerfile
	docker build -t elixircache -f $(shell pwd)/images/cache.Dockerfile .
	date > .make/cache
