diff --git a/Makefile b/Makefile index 37efc318b..402ddf433 100644 --- a/Makefile +++ b/Makefile @@ -21,6 +21,11 @@ export CF_PREFIX export DEVELOP export MOUNT_DIR=/mnt/fradrive export CONTAINER_ATTACHED +export CONTAINER_INIT +export CONTAINER_CLEANUP + +export STACK_INIT="./utils/stack-work-init.sh" +export STACK_CLEANUP="rm -f .stack-work.lock" export SERVICE export SERVICE_VARIANT ?= $(SERVICE) @@ -98,18 +103,24 @@ start: %-backend: SERVICE=backend %-backend: SERVICE_VARIANT=backend %-backend: CONTAINER_CMD=localhost/fradrive/backend +%-backend: CONTAINER_INIT="$(STACK_INIT)" +%-backend: CONTAINER_CLEANUP="$(STACK_CLEANUP)" %-backend: BASE_PORTS = "DEV_PORT_HTTP=3000" "DEV_PORT_HTTPS=3443" .PHONY: %-uniworxdb %-uniworxdb: SERVICE=backend %-uniworxdb: SERVICE_VARIANT=uniworxdb %-uniworxdb: CONTAINER_CMD=localhost/fradrive/backend +%-uniworxdb: CONTAINER_INIT="$(STACK_INIT)" +%-uniworxdb: CONTAINER_CLEANUP="$(STACK_CLEANUP)" .PHONY: %-hoogle %-hoogle: SERVICE=backend %-hoogle: SERVICE_VARIANT=hoogle %-hoogle: BASE_PORTS = "HOOGLE_PORT=8081" %-hoogle: CONTAINER_CMD=localhost/fradrive/backend +%-hoogle: CONTAINER_INIT="$(STACK_INIT)" +%-hoogle: CONTAINER_CLEANUP="$(STACK_CLEANUP)" --start-hoogle: HOOGLE_PORT=`cat $(CONTAINER_FILE) | grep 'HOOGLE_PORT=' | sed 's/HOOGLE_PORT=//'` ; \ stack $(STACK_CORES) hoogle -- server --local --port $${HOOGLE_PORT} @@ -203,7 +214,7 @@ endif --containerized: --image-build DEVELOP=`cat develop/.current` ; \ - ./utils/watchcontainerrun.sh "$(CONTAINER_COMMAND)" "$(CONTAINER_FILE)" & \ + ./utils/watchcontainerrun.sh "$(CONTAINER_COMMAND)" "$(CONTAINER_FILE)" "$(CONTAINER_INIT)" "$(CONTAINER_CLEANUP)" & \ CONTAINER_NAME=fradrive.$(CURR_DEV).$(CONTAINER_IDENT) ; \ if ! [ -z "$(SET_CONTAINER_CMD)" ] ; \ then \ diff --git a/utils/stack-work-init.sh b/utils/stack-work-init.sh new file mode 100755 index 000000000..f88fabad1 --- /dev/null +++ b/utils/stack-work-init.sh @@ -0,0 +1,18 @@ +#!/usr/bin/env bash + +STACK_WORK_SRC=.stack-work-${JOB} + +if [[ -e .stack-work.lock ]]; then + echo ".stack-work directory is locked (lock file exists); is another stack currently running?" + exit 1 +fi + +touch .stack-work.lock +rm -rf .stack-work + +if [[ ! -e "$STACK_WORK_SRC" ]]; then + mkdir "$STACK_WORK_SRC" + chmod 777 "$STACK_WORK_SRC" +fi + +ln -s "$STACK_WORK_SRC" .stack-work \ No newline at end of file