capitalise = $(shell echo "$(1)" | tr '[:lower:]' '[:upper:]') USER := $(shell whoami) HOSTNAME := $(shell cat /etc/hostname) HOSTNAMES := pi-broughton blade-canongate IP_ADDR_pi-broughton := 192.168.178.91 IP_ADDR_blade-canongate := 192.168.178.75 MASTER_NODE := blade-canongate IS_MASTER_NODE := $(filter $(MASTER_NODE),$(HOSTNAME)) MODULES_pi-broughton := actualbudget MODULES_blade-canongate := gemini ALL_NGINX_MODULES := actualbudget NGINX_MODULES := $(if $(IS_MASTER_NODE),$(ALL_NGINX_MODULES)) MODULES := $(MODULES_$(HOSTNAME)) ALL_MODULES := $(sort $(foreach hostname,$(HOSTNAMES),$(MODULES_$(hostname)))) COMPOSE_SERVICES := $(shell podman-compose config \ | yq ".services | keys" --output-format csv --csv-separator " ") MAKE_MODULES := $(foreach module,$(MODULES),\ $(shell [ -f $(module)/Makefile ] && echo $(module))) SUBDOMAIN_actualbudget := budget PORT_actualbudget := 5006 PORT_gemini := 1965 PORT_smtp := 2500 export ACTUALBUDGET_DATA_DIR := /var/joeac.net-actualbudget/var export GEMINI_CERTIFICATES_DIR := /var/joeac.net-gemini/certificates export GEMINI_COMITIUM_DATA_DIR := /var/joeac.net-gemini/comitium-data ALPINE_VERSION := 3.23 $(foreach module,$(ALL_MODULES),$(if $(PORT_$(module)),$(eval \ export $(call capitalise,$(module))_PORT := $(PORT_$(module))))) $(foreach hostname,$(HOSTNAMES),$(foreach module,$(MODULES_$(hostname)),$(eval \ export HOST_$(module) := $(if $(filter $(HOSTNAME),$(hostname)),127.0.0.1,$(IP_ADDR_$(hostname)))))) ALL_SUBDOMAINS := $(foreach module,$(ALL_MODULES),$(SUBDOMAIN_$(module))) SUBDOMAINS := $(if $(IS_MASTER_NODE),$(ALL_SUBDOMAINS)) ENV_RULES := $(foreach module,$(MODULES),$(if $(shell test -d $(module) && echo 1),$(module)/.env)) MAKE_RULES := $(foreach module,$(MAKE_MODULES),make_$(module)) BUILD_RULES := $(foreach module,$(filter $(COMPOSE_SERVICES),$(MODULES)),build_$(module)) PUSH_RULES := $(foreach module,$(filter $(COMPOSE_SERVICES),$(MODULES)),push_$(module)) INSTALL_RULES := $(foreach module,$(MODULES),install_$(module)) REINSTALL_RULES := $(foreach module,$(MODULES),reinstall_$(module)) UNINSTALL_RULES := $(foreach module,$(MODULES),uninstall_$(module)) CPU_ARCH := $(if $(shell which arch 2>/dev/null),\ $(shell arch),\ $(shell lscpu | grep ^Architecture: | sed "s/^Architecture:[[:space:]]*\([[:alnum:][:punct:]]\+\).*/\1/")) IMAGE_PREFIX := $(if $(filter armv7%,$(CPU_ARCH)),armv7/) COMPOSE_CMD := \ ACTUALBUDGET_DATA_DIR="$(ACTUALBUDGET_DATA_DIR)" \ ALPINE_VERSION="$(ALPINE_VERSION)" \ IMAGE_PREFIX="$(IMAGE_PREFIX)" \ GEMINI_CERTIFICATES_DIR="$(GEMINI_CERTIFICATES_DIR)" \ GEMINI_COMITIUM_DATA_DIR="$(GEMINI_COMITIUM_DATA_DIR)" \ $(foreach module,$(ALL_MODULES),$(call capitalise,$(module))_PORT=$(PORT_$(module))) \ podman-compose