DOCKER ?= podman NAME ?= photos-web-manage OUTPUT ?= public/build SOURCE ?= src ARG_PUBLISH ?= --publish 5000:5000 SHARED ?= ../shared shared_copy = public/shared current_dir = $(shell pwd) shared_source = $(wildcard $(SHARED)/*/*) shared_target = $(foreach path,$(shared_source),$(subst $(SHARED),$(shared_copy),$(path))) container_workdir = /working arg_base = \ --rm --interactive --tty \ --workdir $(container_workdir) \ --security-opt label=disable arg_volume = \ -v $(current_dir)/public:$(container_workdir)/public \ -v $(current_dir)/src:$(container_workdir)/src \ .PHONY: default default: build install .PHONY: clean clean: $(RM) -r $(shared_copy) $(OUTPUT) public/ .container .PHONY: container .containertest container: .containertest .container .containertest: $(DOCKER) image inspect $(NAME)-build 2>&1 >/dev/null || rm .container || exit 0 .container: Dockerfile package.json rollup.config.js $(DOCKER) build --tag $(NAME)-build --no-cache . touch $@ .PHONY: dev # Start a development server dev: public/index.html $(shared_target) | container $(DOCKER) run $(arg_base) $(ARG_PUBLISH) $(arg_volume) \ $(NAME)-build public/index.html: index.tmpl mkdir -p $(@D) go run indextmpl.go -t $? -o $@ -a $(subst public/,,$(shared_copy))/ -b $(subst public/,,$(OUTPUT))/ -mt "[dev] Manage" .SECONDEXPANSION: $(shared_target): $$(subst $$(shared_copy),$$(SHARED),$$@) mkdir -p $(@D) && cp $? $@ .PHONY: build install # Build with rollup build: $(OUTPUT)/manage.js $(OUTPUT)/manage.js: src/* | container $(DOCKER) run $(arg_base) $(arg_volume) \ $(NAME)-build npm run build install: build cp $(OUTPUT)/manage.js $(SHARED)/js/manage.js cp $(OUTPUT)/manage.css $(SHARED)/css/manage.css