dynamic stack dir and env vars
This commit is contained in:
@@ -152,9 +152,10 @@ define docker-stack-update
|
|||||||
$(eval stack := $(patsubst %.yml,%,$(notdir $(1))))
|
$(eval stack := $(patsubst %.yml,%,$(notdir $(1))))
|
||||||
$(eval name := $(firstword $(subst :, ,$(stack))))
|
$(eval name := $(firstword $(subst :, ,$(stack))))
|
||||||
$(eval version := $(or $(2),$(if $(findstring :,$(stack)),$(lastword $(subst :, ,$(stack))),latest)))
|
$(eval version := $(or $(2),$(if $(findstring :,$(stack)),$(lastword $(subst :, ,$(stack))),latest)))
|
||||||
$(eval path := $(patsubst %/,%,$(or $(3),$(if $(findstring /,$(1)),$(if $(wildcard stack/$(1) stack/$(1).yml),stack/$(if $(findstring .yml,$(1)),$(dir $(1)),$(if $(wildcard stack/$(1).yml),$(dir $(1)),$(1))),$(if $(wildcard stack/$(stackz)/$(1) stack/$(stackz)/$(1).yml),stack/$(stackz)/$(if $(findstring .yml,$(1)),$(dir $(1)),$(if $(wildcard stack/$(stackz)/$(1).yml),$(dir $(1)),$(1))),$(dir $(1))))),$(firstword $(wildcard stack/$(stackz)/$(name) stack/$(stackz) stack/$(name))))))
|
$(eval path := $(patsubst %/,%,$(or $(3),$(foreach stack_dir,$(STACK_DIR),$(if $(findstring /,$(1)),$(if $(wildcard $(stack_dir)/$(1) $(stack_dir)/$(1).yml),$(stack_dir)/$(if $(findstring .yml,$(1)),$(dir $(1)),$(if $(wildcard $(stack_dir)/$(1).yml),$(dir $(1)),$(1))),$(if $(wildcard $(stack_dir)/$(stackz)/$(1) $(stack_dir)/$(stackz)/$(1).yml),$(stack_dir)/$(stackz)/$(if $(findstring .yml,$(1)),$(dir $(1)),$(if $(wildcard $(stack_dir)/$(stackz)/$(1).yml),$(dir $(1)),$(1))),$(dir $(1)))))),$(foreach stack_dir,$(STACK_DIR),$(firstword $(wildcard $(stack_dir)/$(stackz)/$(name) $(stack_dir)/$(stackz) $(stack_dir)/$(name)))))))
|
||||||
$(call compose-file,$(path),docker-compose $(name),$(COMPOSE_FILE_SUFFIX) $(version))
|
$(call compose-file,$(path),docker-compose $(name),$(COMPOSE_FILE_SUFFIX) $(version))
|
||||||
$(if $(wildcard $(path)/.env.dist),$(call .env,,$(path)/.env.dist,$(wildcard $(CONFIG)/$(ENV)/$(APP)/.env $(path)/.env.$(ENV) .env)))
|
$(if $(wildcard $(path)/.env.dist),$(call .env,,$(path)/.env.dist,$(wildcard $(CONFIG)/$(ENV)/$(APP)/.env $(path)/.env.$(ENV) .env)))
|
||||||
|
$(call env-vars,$(COMPOSE_FILE))
|
||||||
endef
|
endef
|
||||||
# function docker-tag: Tag docker image
|
# function docker-tag: Tag docker image
|
||||||
define docker-tag
|
define docker-tag
|
||||||
|
|||||||
+2
-1
@@ -33,10 +33,11 @@ HOST_DOCKER_VOLUME ?= $(HOST_COMPOSE_PROJECT_NAME)
|
|||||||
HOST_GID ?= $(HOST_UID)
|
HOST_GID ?= $(HOST_UID)
|
||||||
HOST_UID ?= 123
|
HOST_UID ?= 123
|
||||||
HOST_STACK ?= $(filter host,$(firstword $(subst /, ,$(STACK))))
|
HOST_STACK ?= $(filter host,$(firstword $(subst /, ,$(STACK))))
|
||||||
MYOS_STACK ?= $(MYOS)/stack/myos
|
MYOS_STACK ?= $(foreach stack_dir,$(STACK_DIR),$(MYOS)/$(stack_dir)/myos)
|
||||||
MYOS_STACK_FILE ?= networks volumes
|
MYOS_STACK_FILE ?= networks volumes
|
||||||
RESU_DOCKER_REPOSITORY ?= $(subst -,/,$(USER_COMPOSE_PROJECT_NAME))
|
RESU_DOCKER_REPOSITORY ?= $(subst -,/,$(USER_COMPOSE_PROJECT_NAME))
|
||||||
STACK ?= $(APP)
|
STACK ?= $(APP)
|
||||||
|
STACK_DIR ?= stack
|
||||||
USER_COMPOSE_PROJECT_NAME ?= $(subst .,-,$(RESU))
|
USER_COMPOSE_PROJECT_NAME ?= $(subst .,-,$(RESU))
|
||||||
USER_COMPOSE_SERVICE_NAME ?= $(USER_COMPOSE_PROJECT_NAME)
|
USER_COMPOSE_SERVICE_NAME ?= $(USER_COMPOSE_PROJECT_NAME)
|
||||||
USER_DOCKER_IMAGE ?= $(USER_DOCKER_REPOSITORY):${DOCKER_IMAGE_TAG}
|
USER_DOCKER_IMAGE ?= $(USER_DOCKER_REPOSITORY):${DOCKER_IMAGE_TAG}
|
||||||
|
|||||||
+12
-5
@@ -8,8 +8,8 @@ percent ?= %
|
|||||||
quote ?= '
|
quote ?= '
|
||||||
rbracket ?= )
|
rbracket ?= )
|
||||||
APP ?= $(if $(wildcard .git),$(notdir $(CURDIR)))
|
APP ?= $(if $(wildcard .git),$(notdir $(CURDIR)))
|
||||||
APP_LOAD ?= $(if $(SUBREPO),subrepo) $(if $(filter .,$(MYOS)),myos)
|
|
||||||
APP_NAME ?= $(subst _,,$(subst -,,$(subst .,,$(call LOWERCASE,$(APP)))))
|
APP_NAME ?= $(subst _,,$(subst -,,$(subst .,,$(call LOWERCASE,$(APP)))))
|
||||||
|
APP_TYPE ?= $(if $(SUBREPO),subrepo) $(if $(filter .,$(MYOS)),myos)
|
||||||
APPS ?= $(if $(MONOREPO),$(sort $(patsubst $(MONOREPO_DIR)/%/.git,%,$(wildcard $(MONOREPO_DIR)/*/.git))))
|
APPS ?= $(if $(MONOREPO),$(sort $(patsubst $(MONOREPO_DIR)/%/.git,%,$(wildcard $(MONOREPO_DIR)/*/.git))))
|
||||||
APPS_NAME ?= $(foreach app,$(APPS),$(or $(shell awk -F '=' '$$1 == "APP" {print $$2}' $(or $(wildcard $(MONOREPO_DIR)/$(app)/.env),$(wildcard $(MONOREPO_DIR)/$(app)/.env.$(ENV)),$(MONOREPO_DIR)/$(app)/.env.dist) 2>/dev/null),$(app)))
|
APPS_NAME ?= $(foreach app,$(APPS),$(or $(shell awk -F '=' '$$1 == "APP" {print $$2}' $(or $(wildcard $(MONOREPO_DIR)/$(app)/.env),$(wildcard $(MONOREPO_DIR)/$(app)/.env.$(ENV)),$(MONOREPO_DIR)/$(app)/.env.dist) 2>/dev/null),$(app)))
|
||||||
BRANCH ?= $(GIT_BRANCH)
|
BRANCH ?= $(GIT_BRANCH)
|
||||||
@@ -43,7 +43,7 @@ CONTEXT ?= ENV $(shell awk 'BEGIN {FS="="}; $$1 !~ /^(\#
|
|||||||
CONTEXT_DEBUG ?= MAKEFILE_LIST DOCKER_ENV_ARGS ENV_ARGS APPS GIT_AUTHOR_EMAIL GIT_AUTHOR_NAME MAKE_DIR MAKE_SUBDIRS MAKE_CMD_ARGS MAKE_ENV_ARGS UID USER
|
CONTEXT_DEBUG ?= MAKEFILE_LIST DOCKER_ENV_ARGS ENV_ARGS APPS GIT_AUTHOR_EMAIL GIT_AUTHOR_NAME MAKE_DIR MAKE_SUBDIRS MAKE_CMD_ARGS MAKE_ENV_ARGS UID USER
|
||||||
DEBUG ?=
|
DEBUG ?=
|
||||||
DOCKER ?= $(shell type -p docker)
|
DOCKER ?= $(shell type -p docker)
|
||||||
DOMAIN ?= $(or $(shell dnsdomainname 2>/dev/null),$(shell hostname -d 2>/dev/null),$(shell hostname -f | sed -n 's/[^\.]*\.\([^/ ]*\).*/\1/p'), localhost)
|
DOMAIN ?= $(or $(filter-out local,$(or $(shell dnsdomainname 2>/dev/null),$(shell hostname -d 2>/dev/null),$(shell hostname -f | sed -n 's/[^\.]*\.\([^/ ]*\).*/\1/p'))), localhost)
|
||||||
DOMAINNAME ?= $(firstword $(DOMAIN))
|
DOMAINNAME ?= $(firstword $(DOMAIN))
|
||||||
DRONE ?= false
|
DRONE ?= false
|
||||||
DRYRUN ?= false
|
DRYRUN ?= false
|
||||||
@@ -79,13 +79,13 @@ $(foreach cmd,$(INSTALL_CMDS),$(if $(CMD_$(cmd)),$(eval INSTALL_CMD ?= $(CMD_$(c
|
|||||||
LOG_LEVEL := $(or $(if $(DEBUG),debug),$(if $(VERBOSE),info),error)
|
LOG_LEVEL := $(or $(if $(DEBUG),debug),$(if $(VERBOSE),info),error)
|
||||||
MAIL ?= $(GIT_AUTHOR_EMAIL)
|
MAIL ?= $(GIT_AUTHOR_EMAIL)
|
||||||
MAKE_ARGS = $(foreach var,$(MAKE_VARS),$(if $($(var)),$(var)='$($(var))'))
|
MAKE_ARGS = $(foreach var,$(MAKE_VARS),$(if $($(var)),$(var)='$($(var))'))
|
||||||
MAKE_SUBDIRS ?= $(if $(filter myos,$(MYOS)),monorepo,$(if $(APP),apps $(foreach type,$(APP_LOAD),$(if $(wildcard $(MAKE_DIR)/apps/$(type)),apps/$(type)))))
|
MAKE_SUBDIRS ?= $(if $(filter myos,$(MYOS)),monorepo,$(if $(APP),apps $(foreach type,$(APP_TYPE),$(if $(wildcard $(MAKE_DIR)/apps/$(type)),apps/$(type)))))
|
||||||
MAKE_CMD_ARGS ?= $(foreach var,$(MAKE_CMD_VARS),$(var)='$($(var))')
|
MAKE_CMD_ARGS ?= $(foreach var,$(MAKE_CMD_VARS),$(var)='$($(var))')
|
||||||
MAKE_CMD_VARS ?= $(strip $(foreach var, $(filter-out .VARIABLES,$(.VARIABLES)), $(if $(filter command\ line,$(origin $(var))),$(var))))
|
MAKE_CMD_VARS ?= $(strip $(foreach var, $(filter-out .VARIABLES,$(.VARIABLES)), $(if $(filter command\ line,$(origin $(var))),$(var))))
|
||||||
MAKE_ENV_ARGS ?= $(foreach var,$(filter $(ENV_VARS),$(MAKE_ENV_VARS)),$(var)='$($(var))')
|
MAKE_ENV_ARGS ?= $(foreach var,$(filter $(ENV_VARS),$(MAKE_ENV_VARS)),$(var)='$($(var))')
|
||||||
MAKE_ENV_VARS ?= $(strip $(foreach var, $(filter-out .VARIABLES,$(.VARIABLES)), $(if $(filter environment,$(origin $(var))),$(var))))
|
MAKE_ENV_VARS ?= $(strip $(foreach var, $(filter-out .VARIABLES,$(.VARIABLES)), $(if $(filter environment,$(origin $(var))),$(var))))
|
||||||
MAKE_FILE_ARGS ?= $(foreach var,$(filter $(ENV_VARS),$(MAKE_FILE_VARS)),$(var)='$($(var))')
|
MAKE_FILE_ARGS ?= $(foreach var,$(filter $(ENV_VARS),$(MAKE_FILE_VARS)),$(var)='$($(var))')
|
||||||
MAKE_FILE_VARS ?= $(strip $(foreach var, $(filter-out .VARIABLES,$(.VARIABLES)), $(if $(filter file,$(origin $(var))),$(var))))
|
MAKE_FILE_VARS ?= $(sort $(foreach var, $(filter-out .VARIABLES COLOR_% MAKE_FILE_VARS,$(.VARIABLES)), $(if $(filter file,$(origin $(var))),$(var))))
|
||||||
MAKE_OLDFILE ?= $@
|
MAKE_OLDFILE ?= $@
|
||||||
MAKE_TARGETS ?= $(filter-out $(.VARIABLES),$(shell $(MAKE) -qp 2>/dev/null |awk -F':' '/^[a-zA-Z0-9][^$$\#\/\t=]*:([^=]|$$)/ {print $$1}' 2>/dev/null |sort -u))
|
MAKE_TARGETS ?= $(filter-out $(.VARIABLES),$(shell $(MAKE) -qp 2>/dev/null |awk -F':' '/^[a-zA-Z0-9][^$$\#\/\t=]*:([^=]|$$)/ {print $$1}' 2>/dev/null |sort -u))
|
||||||
MAKE_UNIXTIME_START := $(shell date -u +'%s' 2>/dev/null)
|
MAKE_UNIXTIME_START := $(shell date -u +'%s' 2>/dev/null)
|
||||||
@@ -187,7 +187,7 @@ rs256 = $(shell echo -n '$(1)' |openssl dgst -sha256 -binary -sign '$(2)')
|
|||||||
JWT_HEADER = {"alg":"HS256","typ":"JWT"}
|
JWT_HEADER = {"alg":"HS256","typ":"JWT"}
|
||||||
|
|
||||||
# macro JWT: Print Json Web Token for header $1 payload $2 and key $3
|
# macro JWT: Print Json Web Token for header $1 payload $2 and key $3
|
||||||
JWT = $(strip \
|
JWT := $(strip \
|
||||||
$(eval header := $(or $(1),$(JWT_HEADER))) \
|
$(eval header := $(or $(1),$(JWT_HEADER))) \
|
||||||
$(eval payload := $(or $(2),$(JWT_PAYLOAD))) \
|
$(eval payload := $(or $(2),$(JWT_PAYLOAD))) \
|
||||||
$(eval secret := $(or $(3),$(JWT_SECRET))) \
|
$(eval secret := $(or $(3),$(JWT_SECRET))) \
|
||||||
@@ -309,6 +309,13 @@ define env-exec
|
|||||||
IFS=$$'\n'; env $(env_reset) $(env_args) $(1)
|
IFS=$$'\n'; env $(env_reset) $(env_args) $(1)
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
# function env-vars: Extract variables from file 1 to update variable ENV_VARS
|
||||||
|
define env-vars
|
||||||
|
$(call INFO,env-vars,$(1))
|
||||||
|
$(eval file := $(wildcard $(or $(1),$(COMPOSE_FILE))))
|
||||||
|
$(if $(file),$(eval ENV_VARS := $(sort $(ENV_VARS) $(shell sed 's/\$$\$$//g' $(file) | grep -oE '\$$\{?[A-Z0-9_]+' | tr -d '{}$$'))))
|
||||||
|
endef
|
||||||
|
|
||||||
# function make: Call make with predefined options and variables
|
# function make: Call make with predefined options and variables
|
||||||
# 1st arg: make command line (targets and arguments)
|
# 1st arg: make command line (targets and arguments)
|
||||||
# 2nd arg: directory to call make from
|
# 2nd arg: directory to call make from
|
||||||
|
|||||||
+1
-1
@@ -21,6 +21,6 @@ include $(filter-out $(wildcard $(MAKE_FILE) $(MAKE_FIRST) $(MAKE_LATEST)),$(wil
|
|||||||
## it includes $(MAKE_DIR)/$(MAKE_SUBDIRS)/*.mk
|
## it includes $(MAKE_DIR)/$(MAKE_SUBDIRS)/*.mk
|
||||||
include $(foreach subdir,$(MAKE_SUBDIRS),$(filter-out $(wildcard $(MAKE_DIR)/$(subdir)/def.mk $(MAKE_DIR)/$(subdir)/def.*.mk),$(wildcard $(MAKE_DIR)/$(subdir)/*.mk)))
|
include $(foreach subdir,$(MAKE_SUBDIRS),$(filter-out $(wildcard $(MAKE_DIR)/$(subdir)/def.mk $(MAKE_DIR)/$(subdir)/def.*.mk),$(wildcard $(MAKE_DIR)/$(subdir)/*.mk)))
|
||||||
## if not in $(MYOS) nor $(MONOREPO), it includes *.mk */*.mk, else stack/*.mk if in $(MYOS)
|
## if not in $(MYOS) nor $(MONOREPO), it includes *.mk */*.mk, else stack/*.mk if in $(MYOS)
|
||||||
include $(if $(filter-out myos,$(MYOS)),$(if $(filter-out .,$(MYOS)),$(filter-out $(wildcard def.mk def.*.mk */def.mk */def.*.mk),$(wildcard *.mk */*.mk)),$(wildcard stack/*.mk stack/*/*.mk)))
|
include $(if $(filter-out myos,$(MYOS)),$(if $(filter-out .,$(MYOS)),$(filter-out $(wildcard def.mk def.*.mk */def.mk */def.*.mk),$(wildcard *.mk */*.mk)),$(foreach stack_dir,$(STACK_DIR),$(wildcard $(stack_dir)/*.mk $(stack_dir)/*/*.mk))))
|
||||||
## it includes $(MAKE_LATEST)
|
## it includes $(MAKE_LATEST)
|
||||||
include $(wildcard $(MAKE_LATEST))
|
include $(wildcard $(MAKE_LATEST))
|
||||||
|
|||||||
Reference in New Issue
Block a user