66 lines
1.7 KiB
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
|
|
|