#############################################################################################
#############################################################################################
##
## BLACKBOX
##
#############################################################################################
#############################################################################################

ifndef BLACKBOX_DOCKERFILE
  $(error $(ERRORMARKER) BLACKBOX_DOCKERFILE is not defined, check your Makefile if blackbox.mk is included)
endif

ifndef BLACKBOX_RUN_SCRIPT
  $(error $(ERRORMARKER) BLACKBOX_RUN_SCRIPT is not defined, check your Makefile if blackbox.mk is included)
endif

export BLACKBOX_DOCKERFILE
export BLACKBOX_RUN_SCRIPT

$(BLACKBOX_BUILD_DIR):
	$(QUIET) $(MKDIR) -p $(BLACKBOX_BUILD_DIR)

$(BLACKBOX_BUILD_DIR)/Dockerfile: $(BLACKBOX_BUILD_DIR)
	$(QUIET) $(ECHO) "$$BLACKBOX_DOCKERFILE" > $@

$(BLACKBOX_BUILD_DIR)/filesystem:
	$(QUIET) $(MKDIR) -p $(BLACKBOX_BUILD_DIR)/filesystem

$(BLACKBOX_BUILD_DIR)/filesystem/bin:
	$(QUIET) $(MKDIR) -p $(BLACKBOX_BUILD_DIR)/filesystem/bin

$(BLACKBOX_BUILD_DIR)/filesystem/bin/run-blackbox.sh: $(BLACKBOX_BUILD_DIR)/filesystem/bin
	$(QUIET) $(ECHO) "$$BLACKBOX_RUN_SCRIPT" > $@
	$(QUIET) $(CHMOD) u+x $@

.PHONY: blackbox-build-image
## build blackbox image
blackbox-build-image: $(BLACKBOX_BUILD_DIR)/Dockerfile $(BLACKBOX_BUILD_DIR)/filesystem/bin/run-blackbox.sh
	$(ECHOMARKER) "build blackbox image"
	$(QUIET) docker build --build-arg UID=$(shell id -u) \
	                      --build-arg GID=$(shell id -g) \
	                      --build-arg UNAME=$(shell id -un) \
	                      -t $(BLACKBOX_IMAGE) $(BLACKBOX_BUILD_DIR)

.PHONY: blackbox-open
## open credential with blackbox
blackbox-open:
ifeq ($(shell docker images -q ${BLACKBOX_IMAGE} 2> /dev/null),)
	$(QUIET) $(MAKE) blackbox-build-image
endif
	$(ECHOMARKER) "open credential with blackbox"
	$(QUIET) docker run --user $(shell id -u):$(shell id -g) \
                    --rm -it \
                    -v $(BLACKBOX_ROOT_DIR):/repos \
                    -v $(BLACKBOX_GPG_PATH):/home/$(shell id -un)/.gnupg \
                    $(BLACKBOX_IMAGE) open

.PHONY: blackbox-close
## close credential with blackbox
blackbox-close:
ifeq ($(shell docker images -q ${BLACKBOX_IMAGE} 2> /dev/null),)
	$(QUIET) $(MAKE) blackbox-build-image
endif
	$(ECHOMARKER) "open credential with blackbox"
	$(QUIET) docker run --user $(shell id -u):$(shell id -g) \
                    --rm -it \
                    -v $(BLACKBOX_ROOT_DIR):/repos \
                    -v $(BLACKBOX_GPG_PATH):/home/$(shell id -un)/.gnupg \
                    $(BLACKBOX_IMAGE) close

.PHONY: blackbox-run
## run credential with blackbox
blackbox-run:
ifeq ($(shell docker images -q ${BLACKBOX_IMAGE} 2> /dev/null),)
	$(QUIET) $(MAKE) blackbox-build-image
endif
	$(ECHOMARKER) "open credential with blackbox"
	$(QUIET) docker run --user $(shell id -u):$(shell id -g) \
                    --rm -it \
                    -v $(BLACKBOX_ROOT_DIR):/repos \
                    -v $(BLACKBOX_GPG_PATH):/home/$(shell id -un)/.gnupg \
                    $(BLACKBOX_IMAGE) run