build(Makefile): Rewrite target structured names, continued.

This commit is contained in:
Stephan Barth 2024-11-03 16:33:18 +01:00
parent 1b5c02fffd
commit e38adb42b3

View File

@ -90,11 +90,11 @@ release:
.PHONY: %-shell
# HELP: launch shell (bash) inside a currently running container
%-shell: --%-shell;
%-shell: --%_shell;
--shell:
$(CONTAINER_COMMAND) exec -it $(EXEC_OPTS) fradrive.$(CURR_DEV).$* $(if $(ENTRYPOINT),$(ENTRYPOINT),/bin/bash)
compile-%: --%-containerized-compile;
compile-%: --%_containerized_--compile;
##### GENERAL TARGETS #####
###########################
@ -102,50 +102,50 @@ compile-%: --%-containerized-compile;
##############################################
##### SERVICE DEPENDENCIES AND VARIABLES #####
--frontend-%: FRADRIVE_SERVICE=frontend
--frontend-%: SERVICE_VARIANT=frontend
--frontend-%: SINGLETON = false
--frontend-%: WATCH = false
--frontend-%:
--frontend_%: FRADRIVE_SERVICE=frontend
--frontend_%: SERVICE_VARIANT=frontend
--frontend_%: SINGLETON = false
--frontend_%: WATCH = false
--frontend_%:
# TODO --containerized-% is not yet working; comment this in again as soon as it does
# $(MAKE) -- --containerized-static --containerized-well-known
$(MAKE) -- --$*
--backend-%: FRADRIVE_SERVICE=backend
--backend-%: SERVICE_VARIANT=backend
--backend-%: BASE_PORTS = "DEV_PORT_HTTP=3000" "DEV_PORT_HTTPS=3443"
--backend-%: SINGLETON = false
--backend-%:
$(MAKE) -- --frontend-containerized-compile
--backend_%: FRADRIVE_SERVICE=backend
--backend_%: SERVICE_VARIANT=backend
--backend_%: BASE_PORTS = "DEV_PORT_HTTP=3000" "DEV_PORT_HTTPS=3443"
--backend_%: SINGLETON = false
--backend_%:
$(MAKE) -- --frontend_containerized_--compile
$(MAKE) -- --$*
--hoogle-%: FRADRIVE_SERVICE=backend
--hoogle-%: SERVICE_VARIANT=hoogle
--hoogle-%: BASE_PORTS = "HOOGLE_PORT=8081"
--hoogle-%: SINGLETON = true
--hoogle-%:
--hoogle_%: FRADRIVE_SERVICE=backend
--hoogle_%: SERVICE_VARIANT=hoogle
--hoogle_%: BASE_PORTS = "HOOGLE_PORT=8081"
--hoogle_%: SINGLETON = true
--hoogle_%:
$(MAKE) -- --$*
# --uniworxdb was --db in old versions
--uniworxdb-%: FRADRIVE_SERVICE=backend
--uniworxdb-%: SERVICE_VARIANT=uniworxdb
--uniworxdb-%:
--uniworxdb_%: FRADRIVE_SERVICE=backend
--uniworxdb_%: SERVICE_VARIANT=uniworxdb
--uniworxdb_%:
$(MAKE) -- --$*
--minio-%: FRADRIVE_SERVICE=minio
--minio-%: SERVICE_VARIANT=minio
--minio-%:
--minio_%: FRADRIVE_SERVICE=minio
--minio_%: SERVICE_VARIANT=minio
--minio_%:
$(MAKE) -- --$*
--memcached-%: FRADRIVE_SERVICE=memcached
--memcached-%: SERVICE_VARIANT=memcached
--memcached-%:
--memcached_%: FRADRIVE_SERVICE=memcached
--memcached_%: SERVICE_VARIANT=memcached
--memcached_%:
$(MAKE) -- --$*
# --postgres was --database in old versions
--postgres-%: BASE_PORTS = "PGPORT=5432"
--postgres-%: SINGLETON = true
--postgres-%:
--postgres_%: BASE_PORTS = "PGPORT=5432"
--postgres_%: SINGLETON = true
--postgres_%:
$(MAKE) -- --$*
##### SERVICE DEPENDENCIES AND VARIABLES #####
@ -164,7 +164,7 @@ compile:
$(MAKE) compile-frontend
$(MAKE) compile-backend
--compile-%: --checkvarsset --develop --%
--compile_%: --checkvarsset --develop --%
.PHONY: lint
# HELP: lint frontend and backend
@ -279,7 +279,7 @@ ifeq ($(SERVICE_VARIANT), backend)
endif
# HELP(uniworxdb): clear and fill database. requires running postgres
uniworxdb: --frontend-compile --backend-imagebuild-containerized-uniworxdb-start;
uniworxdb: --frontend_compile --backend_imagebuild_containerized_--uniworxdb_start;
# TODO (db-m-$MIGRATION-backend): apply migration (see src/Model/Migration/Definition.hs for list of available migrations)
ifeq ($(SERVICE_VARIANT), uniworxdb)
--start: .stack
@ -293,7 +293,7 @@ endif
if [ "$(IN_CONTAINER)" == "true" ] ; then \
$(MAKE) -- --.stack ; \
else \
$(MAKE) -- --image-run---.stack ; \
$(MAKE) -- --imagerun_--.stack ; \
fi
--.stack: stack.yaml stack.yaml.lock package.yaml
stack build --fast --only-dependencies
@ -306,11 +306,11 @@ endif
##### DATABASE TARGETS #####
ifeq ($(SERVICE_VARIANT), postgres)
--containerized-%: --checkvarsset docker/database/initdb.sh docker/database/pg_hba.conf docker/database/postgresql.conf docker/database/schema.sql --image-build
$(MAKE) -- --imagerun-$*
--containerized_%: --checkvarsset docker/database/initdb.sh docker/database/pg_hba.conf docker/database/postgresql.conf docker/database/schema.sql --image-build
$(MAKE) -- --imagerun_$*
else
--containerized-%: --checkvarsset
$(MAKE) -- --imagerun-$*
--containerized_%: --checkvarsset
$(MAKE) -- --imagerun_$*
endif
.PHONY: psql
@ -344,7 +344,7 @@ psql: --database-shell;
# --containerized-%-minio: --image-build
# $(MAKE) -- --image-run-$*-minio
ifeq ($(SERVICE_VARIANT), minio)
--containerized-start:
--containerized_start:
UPLOAD_S3_PORT=`cat $(CONTAINER_FILE) | grep 'UPLOAD_S3_PORT=' | sed 's/UPLOAD_S3_PORT=//'`; \
MINIO_DIR=`mktemp` ; \
./utils/watchcontainerrun.sh "$(CONTAINER_COMMAND)" "$(CONTAINER_FILE)" "" "rm -rf $${MINIO_DIR}" & \
@ -356,7 +356,7 @@ endif
# --containerized-%-memcached: --image-build
# $(MAKE) -- --image-run-$*-memcached
ifeq ($(SERVICE_VARIANT), memcached)
--containerized-start:
--containerized_start:
MEMCACHED_PORT=`cat $(CONTAINER_FILE) | grep 'MEMCACHED_PORT=' | sed 's/MEMCACHED_PORT=//'`; \
./utils/watchcontainerrun.sh "$(CONTAINER_COMMAND)" "$(CONTAINER_FILE)" & \
CONTAINER_ID=`$(CONTAINER_BGRUN) --name fradrive.$(CURR_DEV).memcached $(MEMCACHED_IMAGE) --port=$${MEMCACHED_PORT}` ; \
@ -365,7 +365,7 @@ endif
.PHONY: image-rebuild
# HELP(image-rebuild-{backend,frontend,database,memcached,minio}): force-rebuild the stated docker image
image-rebuild-%:
image-rebuild_%:
$(MAKE) -- --image-build FRADRIVE_SERVICE=$* NO_CACHE=--no-cache
--image-build:
rm -f .Dockerfile
@ -380,16 +380,16 @@ image-rebuild-%:
fi
# runs --% in the container. Targets meant to be called manually cannot be run in the container via this target. If that is ever needed split this target into two targets, one for manually one for automatic (one may use the other) so that not at every usage a '---' has to be after containerized
--imagerun-%: --checkvarsset docker/$(FRADRIVE_SERVICE)/Dockerfile
--imagerun_%: --checkvarsset docker/$(FRADRIVE_SERVICE)/Dockerfile
MOUNT_DIR=/mnt/fradrive; \
if [ "$(IN_CONTAINER)" == "true" ] ; then \
$(MAKE) -- $* ; \
else \
if [ -z "$(CONTAINER_FILE)" ] ; then \
$(CONTAINER_FGRUN) -v $(PWD):$${MOUNT_DIR} --env FRADRIVE_SERVICE=$(FRADRIVE_SERVICE) --env SERVICE_VARIANT=$(SERVICE_VARIANT) --env IN_CONTAINER=true --env FRADRIVE_MAKE_TARGET=--$* --env CONTAINER_FILE=$(CONTAINER_FILE) --env CONTAINER_FILE_CONTENT=$(CONTAINER_FILE_CONTENT) --env WATCH=$(WATCH) --name fradrive.$(CURR_DEV).$(SERVICE_VARIANT) localhost/fradrive/$(FRADRIVE_SERVICE) ; \
$(CONTAINER_FGRUN) -v $(PWD):$${MOUNT_DIR} --env FRADRIVE_SERVICE=$(FRADRIVE_SERVICE) --env SERVICE_VARIANT=$(SERVICE_VARIANT) --env IN_CONTAINER=true --env FRADRIVE_MAKE_TARGET=$* --env CONTAINER_FILE=$(CONTAINER_FILE) --env CONTAINER_FILE_CONTENT=$(CONTAINER_FILE_CONTENT) --env WATCH=$(WATCH) --name fradrive.$(CURR_DEV).$(SERVICE_VARIANT) localhost/fradrive/$(FRADRIVE_SERVICE) ; \
else \
./utils/watchcontainerrun.sh "$(CONTAINER_COMMAND)" "$(CONTAINER_FILE)" & \
CONTAINER_ID=`$(CONTAINER_BGRUN) -v $(PWD):$${MOUNT_DIR} --env FRADRIVE_SERVICE=$(FRADRIVE_SERVICE) --env SERVICE_VARIANT=$(SERVICE_VARIANT) --env IN_CONTAINER=true --env FRADRIVE_MAKE_TARGET=--$* --env CONTAINER_FILE=$(CONTAINER_FILE) --env CONTAINER_FILE_CONTENT=$(CONTAINER_FILE_CONTENT) --env WATCH=$(WATCH) --name fradrive.$(CURR_DEV).$(SERVICE_VARIANT) localhost/fradrive/$(FRADRIVE_SERVICE)` ; \
CONTAINER_ID=`$(CONTAINER_BGRUN) -v $(PWD):$${MOUNT_DIR} --env FRADRIVE_SERVICE=$(FRADRIVE_SERVICE) --env SERVICE_VARIANT=$(SERVICE_VARIANT) --env IN_CONTAINER=true --env FRADRIVE_MAKE_TARGET=$* --env CONTAINER_FILE=$(CONTAINER_FILE) --env CONTAINER_FILE_CONTENT=$(CONTAINER_FILE_CONTENT) --env WATCH=$(WATCH) --name fradrive.$(CURR_DEV).$(SERVICE_VARIANT) localhost/fradrive/$(FRADRIVE_SERVICE)` ; \
echo "CONTAINER_ID=$${CONTAINER_ID}" >> "$(CONTAINER_FILE)"; \
fi \
fi
@ -402,7 +402,13 @@ image-rebuild-%:
# HELP(start-backend): serve yesod development site
# HELP(start-frontend): start frontend watcher. Watches frontend source files for changes and recompiles on change. (TODO: watcher functionality currently broken!)
# HELP(start-hoogle): serve local hoogle instance
# TODO reformulate target to use the '--%_'-mechanism
# --autostart: use the SERVICE_VARIANT for the decision which service to start
--autostart: --checkvarsset
$(MAKE) -- start-$(SERVICE_VARIANT)
start-%: FRADRIVE_SERVICE = %
start-%: SERVICE_VARIANT = %
start-%: PORTS = $(foreach PORT,$(BASE_PORTS),$(shell utils/next_free_port.pl $(PORT)))
start-%: --develop
echo "$*"
@ -421,7 +427,7 @@ start-%: --develop
CONTAINER_FILE=$${DEVDIR}-$$(($${I}+1)); \
fi ; \
echo "$(PORTS)" | sed 's/ /\n/g' > $${CONTAINER_FILE} ; \
$(MAKE) -- --containerized---start-$* CONTAINER_FILE=$${CONTAINER_FILE}
$(MAKE) -- --containerized_--autostart CONTAINER_FILE=$${CONTAINER_FILE}
.PHONY: stop
# HELP: stop all currently running develop instances
@ -494,7 +500,7 @@ hoogle: start-hoogle;
.PHONY: i18n-check
# HELP: check internationalization
i18n-check: --image-run---i18n-check
i18n-check: --imagerun_--i18n-check
--i18n-check:
./missing-translations.sh
@echo No missing translations.