myos/make/apps/def.mk

50 lines
4.1 KiB
Makefile
Raw Normal View History

2021-05-31 20:52:49 +02:00
APP_DIR ?= $(CURDIR)
2022-12-09 20:17:22 +01:00
APP_DOMAIN ?= $(patsubst %,$(APP_DOMAIN_PREFIX)%,$(DOMAIN))
APP_DOMAIN_PREFIX ?= $(if $(STACK_HOST),,$(addsuffix .,$(filter-out $(ENV_DEPLOY),$(ENV)))$(USER).)
APP_HOST ?= $(patsubst %,$(APP_HOST_PREFIX)%,$(APP_DOMAIN))$(if $(HOST_LB),$(space)$(APP_DOMAIN))
APP_HOST_PREFIX ?= $(addsuffix .,$(if $(STACK_HOST),$(HOSTNAME),$(if $(APP_LB),,$(APP_NAME))))
2021-06-12 03:13:01 +02:00
APP_INSTALLED ?= $(APPS)
2021-06-06 16:29:54 +02:00
APP_PARENT ?= $(MONOREPO)
APP_PARENT_DIR ?= $(MONOREPO_DIR)
2021-06-16 13:19:52 +02:00
APP_PATH += $(APP_PATH_PREFIX)
APP_REPOSITORY ?= $(APP_REPOSITORY_URL)
APP_REPOSITORY_HOST ?= $(shell printf '$(APP_REPOSITORY_URI)\n' |sed 's|/.*||;s|.*@||')
APP_REPOSITORY_PATH ?= $(shell printf '$(APP_REPOSITORY_URI)\n' |sed 's|[^/]*/||;')
APP_REPOSITORY_SCHEME ?= $(shell printf '$(APP_REPOSITORY_URL)\n' |sed 's|://.*||;')
APP_REPOSITORY_URI ?= $(shell printf '$(APP_REPOSITORY_URL)\n' |sed 's|.*://||;')
APP_REPOSITORY_URL ?= $(GIT_REPOSITORY)
2021-06-12 03:13:01 +02:00
APP_REQUIRED ?= $(APP_REPOSITORY)
2021-05-31 20:52:49 +02:00
APP_SCHEME ?= https
APP_UPSTREAM_REPOSITORY ?= $(or $(shell git config --get remote.upstream.url 2>/dev/null),$(GIT_UPSTREAM_REPOSITORY))
2022-12-09 20:17:22 +01:00
APP_URI ?= $(patsubst %,%/$(APP_PATH),$(APP_HOST))
2022-11-29 17:22:35 +01:00
APP_URIS ?= $(APP_URI)
2022-12-09 20:17:22 +01:00
APP_URL ?= $(patsubst %,$(APP_SCHEME)://%,$(APP_URI))
2021-06-16 13:19:52 +02:00
CONTEXT += APP APPS BRANCH DOMAIN VERSION RELEASE
2021-06-14 12:52:48 +02:00
CONTEXT_DEBUG += APP_DIR APP_URL APP_REPOSITORY APP_UPSTREAM_REPOSITORY ENV_DEPLOY
2022-11-20 01:34:03 +01:00
ENV_DEPLOY ?= $(patsubst origin/%,%,$(shell git rev-parse --symbolic --remotes=origin |sed '/origin\/HEAD/d' 2>/dev/null))
2021-05-31 20:52:49 +02:00
ENV_VARS += APP_DIR APP_DOMAIN APP_HOST APP_PATH APP_URL CONSUL_HTTP_TOKEN $(if $(filter true,$(MOUNT_NFS)),NFS_CONFIG)
2022-12-05 20:29:00 +01:00
MAKECMDARGS += exec exec:% exec@% run run:% run@%
2021-02-09 17:05:00 +01:00
MOUNT_NFS ?= false
NFS_CONFIG ?= addr=$(NFS_HOST),actimeo=3,intr,noacl,noatime,nocto,nodiratime,nolock,soft,rsize=32768,wsize=32768,tcp,rw,vers=3
NFS_HOST ?= host.docker.internal
2021-06-12 03:13:01 +02:00
SERVICES ?= $(DOCKER_SERVICES)
2022-12-09 20:17:22 +01:00
2022-12-10 18:58:25 +01:00
tagprefix = $(call urlprefix,$(or $($(call UPPERCASE,$(1)_SERVICE_$(2)_PATH)),$($(call UPPERCASE,$(1)_SERVICE_PATH))),$(or $($(call UPPERCASE,$(1)_SERVICE_$(2)_OPTS)),$($(call UPPERCASE,$(1)_SERVICE_OPTS)),$(call envprefix,$(1),$(2),auth proto)),$(or $(foreach env,$(3),$($(call UPPERCASE,$(1)_SERVICE_$(2)_$(env)))),$($(call UPPERCASE,$(1)_SERVICE_$(2)_URIS)),$(call uriprefix,$(1),$(2))))
envprefix = $(foreach env,$(3),$(if $($(call UPPERCASE,$(1)_SERVICE_$(2)_$(env))),$(env)=$($(call UPPERCASE,$(1)_SERVICE_$(2)_$(env)))))
patsublist = $(patsubst $(1),$(2),$(firstword $(3)))$(foreach pattern,$(wordlist 2,16,$(3)),$(comma)$(patsubst $(1),$(2),$(pattern)))
servicenvs = $(foreach env,$(call UPPERCASE,$($(1)_SERVICE_$(2)_ENVS)),$(if $(3),$($(1)_SERVICE_$(env)_$(3)),$($(1)_SERVICE_$(2)_$(env))))
uriprefix = $(foreach svc,$(1),$(patsubst %,$(addsuffix .,$(or $($(call UPPERCASE,$(svc)_SERVICE_$(2)_NAME)),$($(call UPPERCASE,$(svc)_SERVICE_NAME)),$(svc)))%,$(APP_URIS)))
url_suffix = *
urlprefix = $(strip $(call patsublist,%,urlprefix-%$(1)$(url_suffix) $(2),$(or $(3),$(APP_URIS))))
urlprefixs = $(strip $(call urlprefix,$(firstword $(1)),$(wordlist 2,16,$(1)))$(foreach prefix,$(subst $(space),$(dollar),$(2)) $(subst $(space),$(dollar),$(3)) $(subst $(space),$(dollar),$(4)),$(comma)$(call subst,$(dollar),$(space),$(call urlprefix,$(firstword $(prefix)),$(wordlist 2,16,$(prefix))))))
2022-12-09 20:17:22 +01:00
## urlprefix tests (x APP_URI)
# $(call urlprefix)
2022-12-10 18:58:25 +01:00
# urlprefix-app.domain/*
# $(call urlprefix,admin/)
# urlprefix-app.domain/admin/*
2022-12-09 20:17:22 +01:00
# $(call urlprefix,:443/ proto=https,$(APP_HOST))
2022-12-10 18:58:25 +01:00
# urlprefix-app.domain:443/* proto=https
2022-12-09 20:17:22 +01:00
## urlprefixs tests (x prefix)
2022-12-10 18:58:25 +01:00
# $(call urlprefixs,admin strip=/admin,images/)
# urlprefix-app.domain/admin* strip=/admin,urlprefix-app.domain/images/*