1
0
Fork 0
photos/web/manage/Makefile

66 lines
1.7 KiB
Makefile

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