diff --git a/Makefile b/Makefile index b10d41c77..1af68457f 100644 --- a/Makefile +++ b/Makefile @@ -2,6 +2,8 @@ CONTAINER_COMMAND ?= podman IN_CONTAINER ?= false IN_CI ?= false +SHELL=bash + export CONTAINER_COMMAND export IN_CONTAINER export IN_CI @@ -62,10 +64,12 @@ test: test-frontend test-backend i18n-check .PHONY: %-frontend %-frontend: FRADRIVE_SERVICE=frontend -%-frontend: --image-build --%-frontend; +%-frontend: --image-build --containerized-%-frontend; .PHONY: --%-frontend ---%-frontend: node_modules well-known; +#--%-frontend: node_modules well-known; +#--%-frontend: --containerized---node_modules-frontend --containerized---well-known-frontend; +--%-frontend: --containerized---frontend-dependencies-frontend; .PHONY: --compile-frontend --compile-frontend: @@ -85,38 +89,53 @@ test: test-frontend test-backend i18n-check @echo Karma frontend tests are currently broken after npm update and have therefor been temporarily disabled. # npx -- karma start --conf karma.conf.cjs $(WATCH) -# TODO: rewrite -.PHONY: --test-frontend-watch ---test-frontend-watch: WATCH=--single-run false ---test-frontend-watch: --test-frontend; +## TODO: rewrite +#.PHONY: --test-frontend-watch +#--test-frontend-watch: WATCH=--single-run false +#--test-frontend-watch: --test-frontend; +# +#node_modules: package.json package-lock.json +# $(MAKE) -- --containerized---node_modules-frontend +#.PHONY: --node_modules +#--node_modules: package.json package-lock.json +# npm ci --cache .npm --prefer-offline +# +#package-lock.json: package.json +# $(MAKE) -- --image-run---package-lock.json +#.PHONY: --package-lock.json +#--package-lock.json: package.json +# npm install --cache .npm --prefer-offline +# +#assets: node_modules +# $(MAKE) -- --image-run---assets +#.PHONY: --assets/icons +#--assets: node_modules +# ./utils/renamer.pl node_modules/@fortawesome/fontawesome-free/svgs/solid utils/rename-fa.json assets/icons/fradrive +# ./utils/renamer.pl node_modules/@fortawesome/fontawesome-free/svgs/regular utils/rename-fa.json assets/icons/fradrive +# +#well-known: node_modules assets well-known/.well-known +# $(MAKE) -- --containerized---well-known-frontend +#.PHONY: --well-known +#--well-known: --node_modules assets well-known/.well-known +# npx webpack --progress +## mark well-known directory as clean after successful webpack run: +# touch well-known/.well-known + +.PHONY: --frontend-dependencies +--frontend-dependencies: node_modules package.json package-lock.json assets node_modules: package.json package-lock.json - $(MAKE) -- --image-run---node_modules -.PHONY: --node_modules ---node_modules: package.json package-lock.json npm ci --cache .npm --prefer-offline - package-lock.json: package.json - $(MAKE) -- --image-run---package-lock.json -.PHONY: --package-lock.json ---package-lock.json: package.json npm install --cache .npm --prefer-offline - assets: node_modules - $(MAKE) -- --image-run---assets -.PHONY: --assets/icons ---assets: node_modules ./utils/renamer.pl node_modules/@fortawesome/fontawesome-free/svgs/solid utils/rename-fa.json assets/icons/fradrive ./utils/renamer.pl node_modules/@fortawesome/fontawesome-free/svgs/regular utils/rename-fa.json assets/icons/fradrive - well-known: node_modules assets well-known/.well-known - $(MAKE) -- --image-run---well-known -.PHONY: --well-known ---well-known: node_modules assets well-known/.well-known npx webpack --progress -# mark well-known directory as clean after successful webpack run: touch well-known/.well-known + well-known/.well-known: # no-op target @@ -129,21 +148,21 @@ well-known/.well-known: .PHONY: %-backend %-backend: FRADRIVE_SERVICE=backend -%-backend: --image-build --%-backend-dev; +%-backend: --image-build --containerized-%-dev-backend; -.PHONY: %-backend-prod -%-backend-prod: FRADRIVE_SERVICE=backend -%-backend-prod: --image-build --%-backend-prod; +.PHONY: %-prod-backend +%-prod-backend: FRADRIVE_SERVICE=backend +%-prod-backend: --image-build --containerized-%-prod-backend; -.PHONY: --%-backend-dev ---%-backend-dev: FRADRIVE_SERVICE=backend ---%-backend-dev: stackopts=--flag uniworx:dev ---%-backend-dev: --image-build --%-backend; +.PHONY: --%-dev-backend +--%-dev-backend: FRADRIVE_SERVICE=backend +--%-dev-backend: stackopts=--flag uniworx:dev +--%-dev-backend: --image-build --containerized-%-backend; -.PHONY: --%-backend-prod ---%-backend-prod: FRADRIVE_SERVICE=backend ---%-backend-prod: stackopts=--flag uniworx:-dev ---%-backend-prod: --image-build --%-backend; +.PHONY: --%-prod-backend +--%-prod-backend: FRADRIVE_SERVICE=backend +--%-prod-backend: stackopts=--flag uniworx:-dev +--%-prod-backend: --image-build --containerized-%-backend; .PHONY: --serve-backend --serve-backend: .stack-work.lock @@ -187,11 +206,19 @@ database: .stack .stack-work.lock compile-backend-prod .PHONY: --containerized-%-frontend --containerized-%-frontend: FRADRIVE_SERVICE=frontend ---containerized-%-frontend: --image-build --image-run-%-frontend; +#--containerized-%-frontend: --image-build --image-run-%-frontend; +--containerized-%-frontend: --image-build + if [ "$(IN_CONTAINER)" == "false" ] ; then \ + $(MAKE) -- --image-run-$*-frontend ; \ + fi .PHONY: --containerized-%-backend --containerized-%-backend: FRADRIVE_SERVICE=backend ---containerized-%-backend: --image-build --image-run-%-backend; +#--containerized-%-backend: --image-build --image-run-%-backend; +--containerized-%-backend: --image-build + if [ "$(IN_CONTAINER)" == "false" ] ; then \ + $(MAKE) -- --image-run-$*-backend ; \ + fi .PHONY: image-rebuild image-rebuild-%: @@ -205,14 +232,16 @@ image-rebuild-%: if [ "$(IN_CI)" == "true" ] ; then \ PROJECT_DIR=/fradrive; \ fi; \ - $(CONTAINER_COMMAND) build $(NO_CACHE) -v $(PWD):$${MOUNT_DIR} --build-arg MOUNT_DIR=$${MOUNT_DIR} --build-arg PROJECT_DIR=$${PROJECT_DIR} --tag $(FRADRIVE_SERVICE) --file $(PWD)/.Dockerfile + if [ "$(IN_CONTAINER)" == "false" ] ; then \ + $(CONTAINER_COMMAND) build $(NO_CACHE) -v $(PWD):$${MOUNT_DIR} --env IN_CONTAINER=true --build-arg MOUNT_DIR=$${MOUNT_DIR} --build-arg PROJECT_DIR=$${PROJECT_DIR} --tag fradrive/$(FRADRIVE_SERVICE) --file $(PWD)/.Dockerfile ; \ + fi .PHONY: --image-run-% --image-run-%: ifeq ($(IN_CONTAINER),true) $(MAKE) -- $* else - $(CONTAINER_COMMAND) run -v $(PWD):/mnt/fradrive --env FRADRIVE_MAKE_TARGET=$* $(FRADRIVE_SERVICE) + $(CONTAINER_COMMAND) run -v $(PWD):/mnt/fradrive --env FRADRIVE_MAKE_TARGET=$* fradrive/$(FRADRIVE_SERVICE) endif ##### CONTAINER TARGETS ##### @@ -228,4 +257,4 @@ i18n-check: --image-run---i18n-check %.lock: [ -e $@ ] || touch $@ - flock -en $@ true \ No newline at end of file + flock -en $@ true diff --git a/docker/frontend/Dockerfile b/docker/frontend/Dockerfile index 777fe153b..96bd9a7c9 100644 --- a/docker/frontend/Dockerfile +++ b/docker/frontend/Dockerfile @@ -23,8 +23,9 @@ RUN if [ "${PROJECT_DIR}" != "${MOUNT_DIR}"]; then cp -r ${MOUNT_DIR}/* ${PROJEC WORKDIR ${PROJECT_DIR} ENV HOME=${PROJECT_DIR} -RUN make node_modules IN_CONTAINER=true -RUN make well-known IN_CONTAINER=true +#RUN make node_modules IN_CONTAINER=true +#RUN make well-known IN_CONTAINER=true +RUN make -- --frontend-dependencies ENV FRADRIVE_MAKE_TARGET=watch-frontend ENTRYPOINT make -- ${FRADRIVE_MAKE_TARGET} IN_CONTAINER=true CHROME_BIN=${CHROME_BIN}