1
0
Fork 0
photos/web/manage/Makefile

74 lines
2.0 KiB
Makefile

NAME ?= photos-web-manage
DOCKER ?= podman
GO ?= go
OUTPUT ?= build
SOURCE ?= src
DEV_PORT ?= 5000
SHARED ?= ../shared
SHARED_COPY ?= $(OUTPUT)/shared
current_dir ?= $(shell pwd)
shared_files = $(wildcard $(SHARED)/*/*)
shared_copy_files = $(foreach path,$(shared_files),$(subst $(SHARED)/,$(SHARED_COPY)/,$(path)))
container_name = $(NAME)-builder
container_workdir = /working
arg_base = \
--rm --interactive --tty \
--workdir $(container_workdir) \
--security-opt label=disable
arg_publish = \
--publish $(DEV_PORT):$(DEV_PORT)
arg_volume = \
-v $(current_dir)/$(OUTPUT):$(container_workdir)/$(OUTPUT) \
-v $(current_dir)/$(SOURCE):$(container_workdir)/$(SOURCE) \
.PHONY: default
default: build install
.PHONY: clean
clean:
$(RM) -r $(OUTPUT) .container
.PHONY: container .containertest
container: .containertest .container
.containertest:
$(DOCKER) image inspect $(container_name) 2>&1 >/dev/null || rm .container || exit 0
.container: Dockerfile package.json rollup.config.js
$(DOCKER) build --tag $(container_name) --no-cache .
touch $@
DEV_BUCKET ?= https://bad-boy-bucket.makerforce.io/test1/
CONTROL_ENDPOINT ?= http://localhost:8000
.PHONY: dev
# Start a development server
dev: $(SOURCE)/* $(OUTPUT)/index.html $(shared_copy_files) | container
echo "$(shared_copy_files)"
$(DOCKER) run $(arg_base) $(arg_publish) $(arg_volume) \
$(container_name)
$(OUTPUT)/index.html: index.tmpl indextmpl.go
mkdir -p $(@D)
$(GO) run indextmpl.go -t $< -o $@ -a $(subst $(OUTPUT)/,,$(SHARED_COPY))/ -c $(CONTROL_ENDPOINT) -b $(DEV_BUCKET) -title "[dev] Manage"
.SECONDEXPANSION:
$(shared_copy_files): $$(subst $$(SHARED_COPY)/,$$(SHARED)/,$$@)
mkdir -p $(@D) && cp $? $@
.PHONY: build install
# Build with rollup
build: $(OUTPUT)/manage.js
$(OUTPUT)/manage.js: $(SOURCE)/* | container
mkdir -p $(@D)
$(DOCKER) run $(arg_base) $(arg_volume) \
$(container_name) npm run build
install: build
cp $(OUTPUT)/manage.js $(SHARED)/js/manage.js
cp $(OUTPUT)/manage.css $(SHARED)/css/manage.css