74 lines
2.0 KiB
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
|
|
|