| 
									
										
										
										
											2024-04-06 11:39:47 -04:00
										 |  |  | 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 = > | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-06 23:07:37 -04:00
										 |  |  | TARGET := builder | 
					
						
							|  |  |  | IMAGE_NAME := organic-development | 
					
						
							|  |  |  | ifneq ($(TARGET),builder) | 
					
						
							|  |  |  |   IMAGE_NAME := $(IMAGE_NAME)-$(TARGET) | 
					
						
							|  |  |  | endif | 
					
						
							| 
									
										
										
										
											2024-04-06 11:39:47 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | .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 organic-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 "organic-cargo-registry:/usr/local/cargo/registry" $(IMAGE_NAME) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .PHONY: clean | 
					
						
							|  |  |  | clean: ## Remove the docker image and volume.
 | 
					
						
							|  |  |  | > docker rmi $(IMAGE_NAME) | 
					
						
							|  |  |  | > docker volume rm organic-cargo-registry |