SHELL := bash .ONESHELL: .SHELLFLAGS := -eu -o pipefail -c .DELETE_ON_ERROR: MAKEFLAGS += --warn-undefined-variables MAKEFLAGS += --no-builtin-rules ifeq ($(origin .RECIPEPREFIX), undefined) $(error This Make does not support .RECIPEPREFIX. Please use GNU Make 4.0 or later) endif .RECIPEPREFIX = > IMAGE_NAME:=natter-development TARGET := .PHONY: help help: > @grep -h "##" $(MAKEFILE_LIST) | grep -v grep | sed -E 's/^([^:]*): *## */\1: /' .PHONY: build build: ## Build the docker image. > docker build --tag $(IMAGE_NAME) --target=$(TARGET) --file Dockerfile . > docker volume create natter-cargo-registry .PHONY: shell shell: ## Launch an interactive shell inside the docker image with the source repository mounted at /source. shell: build > docker run --rm -i -t --entrypoint /bin/sh --mount type=tmpfs,destination=/tmp -v "$$(readlink -f ../../):/source" --workdir=/source --env CARGO_TARGET_DIR=/target -v "natter-cargo-registry:/usr/local/cargo/registry" $(IMAGE_NAME) .PHONY: clean clean: > docker rmi $(IMAGE_NAME) > docker volume rm natter-cargo-registry