wip
This commit is contained in:
+23
-30
@@ -3,24 +3,14 @@ dollar ?= $
|
||||
dquote ?= "
|
||||
quote ?= '
|
||||
APP ?= $(if $(wildcard .git),$(notdir $(CURDIR)))
|
||||
APP_DIR ?= $(if $(APP),$(CURDIR))
|
||||
APP_DOMAIN ?= $(if $(APP),$(ENV)$(addprefix .,$(DOMAIN)))
|
||||
APP_HOST ?= $(if $(APP),$(APP)$(addprefix .,$(APP_DOMAIN)))
|
||||
APP_NAME ?= $(APP)
|
||||
APP_PARAMETERS_REPOSITORY ?= $(GIT_PARAMETERS_REPOSITORY)
|
||||
APP_PATH ?= /$(APP_PATH_PREFIX)
|
||||
APP_SCHEME ?= https
|
||||
APP_TYPE ?= $(if $(SUBREPO),subrepo) $(if $(MYOS),,myos)
|
||||
APP_UPSTREAM_REPOSITORY ?= $(GIT_UPSTREAM_REPOSITORY)
|
||||
APP_URI ?= $(if $(APP),$(APP_HOST)$(APP_PATH))
|
||||
APP_URL ?= $(if $(APP),$(APP_SCHEME)://$(APP_URI))
|
||||
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)))
|
||||
BRANCH ?= $(shell git rev-parse --abbrev-ref HEAD 2>/dev/null)
|
||||
CMDS ?= exec exec:% exec@% run run:% run@%
|
||||
COMMIT ?= $(shell git rev-parse $(BRANCH) 2>/dev/null)
|
||||
CONTEXT ?= $(if $(APP),APP BRANCH VERSION) $(shell awk 'BEGIN {FS="="}; $$1 !~ /^(\#|$$)/ {print $$1}' .env.dist 2>/dev/null) UID USER
|
||||
CONTEXT_DEBUG ?= APP_DIR MAKE_DIR MAKE_SUBDIRS MAKEFILE_LIST MONOREPO_DIR env
|
||||
CONTEXT ?= $(if $(APP),APP BRANCH VERSION) $(shell awk 'BEGIN {FS="="}; $$1 !~ /^(\#|$$)/ {print $$1}' .env.dist 2>/dev/null)
|
||||
CONTEXT_DEBUG ?= APPS GIT_AUTHOR_EMAIL GIT_AUTHOR_NAME MAKE_DIR MAKE_SUBDIRS MAKE_CMD_ARGS MAKE_ENV_ARGS MONOREPO_DIR UID USER env
|
||||
DEBUG ?= false
|
||||
DOCKER ?= true
|
||||
DOMAIN ?= localhost
|
||||
@@ -29,25 +19,28 @@ DRYRUN ?= false
|
||||
DRYRUN_IGNORE ?= false
|
||||
DRYRUN_RECURSIVE ?= false
|
||||
ENV ?= dist
|
||||
ENV_DEPLOY ?= $(if $(APP),$(shell ls .git/refs/heads/))
|
||||
ENV_FILE ?= $(wildcard ../$(PARAMETERS)/$(ENV)/$(APP)/.env) .env
|
||||
ENV_LIST ?= debug local tests release master #TODO: staging develop
|
||||
ENV_RESET ?= false
|
||||
ENV_VARS ?= APP APP_DIR APP_DOMAIN BRANCH ENV HOSTNAME GID MONOREPO MONOREPO_DIR TAG UID USER VERSION
|
||||
ENV_VARS ?= APP BRANCH ENV HOSTNAME GID GIT_AUTHOR_EMAIL GIT_AUTHOR_NAME MONOREPO MONOREPO_DIR TAG UID USER VERSION
|
||||
GID ?= $(shell id -g 2>/dev/null)
|
||||
GIT_AUTHOR_EMAIL ?= $(shell git config user.email 2>/dev/null)
|
||||
GIT_AUTHOR_NAME ?= $(shell git config user.name 2>/dev/null)
|
||||
GIT_PARAMETERS_REPOSITORY ?= $(call pop,$(GIT_UPSTREAM_REPOSITORY))/$(PARAMETERS)
|
||||
GIT_REPOSITORY ?= $(if $(SUBREPO),$(shell awk -F ' = ' '$$1 ~ /^[[\s\t]]*remote$$/ {print $$2}' .gitrepo 2>/dev/null),$(shell git config --get remote.origin.url 2>/dev/null))
|
||||
GIT_UPSTREAM_REPOSITORY ?= $(if $(findstring ://,$(GIT_REPOSITORY)),$(call pop,$(call pop,$(GIT_REPOSITORY)))/,$(call pop,$(GIT_REPOSITORY),:):)$(GIT_UPSTREAM_USER)/$(lastword $(subst /, ,$(GIT_REPOSITORY)))
|
||||
GIT_UPSTREAM_USER ?= $(or $(MONOREPO),$(USER))
|
||||
HOSTNAME ?= $(shell hostname 2>/dev/null |sed 's/\..*//')
|
||||
MAKE_ENV_ARGS ?= $(foreach var,$(MAKE_ENV_VARS),$(if $($(var)),$(var)='$($(var))'))
|
||||
MAKE_ENV_VARS ?= ENV
|
||||
MAKE_ARGS ?= $(foreach var,$(MAKE_VARS),$(if $($(var)),$(var)='$($(var))'))
|
||||
MAKE_SUBDIRS ?= $(if $(filter myos,$(MYOS)),monorepo,$(if $(APP),apps $(foreach type,$(APP_TYPE),$(if $(wildcard $(MAKE_DIR)/apps/$(type)),apps/$(type)))))
|
||||
MAKECMDARGS ?= $(foreach var,$(MAKECMDVARS),$(var)='$($(var))')
|
||||
MAKECMDVARS ?= $(strip $(foreach var, $(filter-out .VARIABLES,$(.VARIABLES)), $(if $(filter command\ line,$(origin $(var))),$(var))))
|
||||
MAKEENVVARS ?= $(strip $(foreach var, $(filter-out .VARIABLES,$(.VARIABLES)), $(if $(filter environment,$(origin $(var))),$(var))))
|
||||
MAKEFILEVARS ?= $(strip $(foreach var, $(filter-out .VARIABLES,$(.VARIABLES)), $(if $(filter file,$(origin $(var))),$(var))))
|
||||
MAKETARGETS ?= $(filter-out $(.VARIABLES),$(shell $(MAKE) -qp 2>/dev/null |awk -F':' '/^[a-zA-Z0-9][^$$\#\/\t=]*:([^=]|$$)/ {print $$1}' |sort -u))
|
||||
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_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_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_TARGETS ?= $(filter-out $(.VARIABLES),$(shell $(MAKE) -qp 2>/dev/null |awk -F':' '/^[a-zA-Z0-9][^$$\#\/\t=]*:([^=]|$$)/ {print $$1}' |sort -u))
|
||||
MAKE_VARS ?= ENV
|
||||
MONOREPO ?= $(if $(filter myos,$(MYOS)),$(notdir $(CURDIR)),$(if $(APP),$(notdir $(realpath $(CURDIR)/..))))
|
||||
MONOREPO_DIR ?= $(if $(MONOREPO),$(if $(filter myos,$(MYOS)),$(realpath $(CURDIR)),$(if $(APP),$(realpath $(CURDIR)/..))))
|
||||
MYOS ?= $(if $(filter $(MAKE_DIR),$(call pop,$(MAKE_DIR))),,$(call pop,$(MAKE_DIR)))
|
||||
@@ -70,12 +63,12 @@ else
|
||||
ENV_ARGS = $(env.args) $(env.dist)
|
||||
endif
|
||||
|
||||
ifneq ($(DEBUG), true)
|
||||
ifneq ($(DEBUG),true)
|
||||
.SILENT:
|
||||
else
|
||||
CONTEXT += $(CONTEXT_DEBUG)
|
||||
endif
|
||||
ifeq ($(DRYRUN), true)
|
||||
ifeq ($(DRYRUN),true)
|
||||
ECHO = $(if $(filter $(DRYRUN_IGNORE),true),,printf '${COLOR_BROWN}$(APP)${COLOR_RESET}[${COLOR_GREEN}$(MAKELEVEL)${COLOR_RESET}] ${COLOR_BLUE}$@${COLOR_RESET}:${COLOR_RESET} '; echo)
|
||||
ifeq ($(RECURSIVE), true)
|
||||
DRYRUN_RECURSIVE := true
|
||||
@@ -143,8 +136,8 @@ gid = $(shell grep '^$(1):' /etc/group 2>/dev/null |awk -F: '{print $$3}')
|
||||
# 2nd arg: directory to call make from
|
||||
# 3rd arg: list of variables to pass to make (ENV by default)
|
||||
# 4th arg: path to .env file with additional arguments to call make with (file must exist when calling make)
|
||||
# add list of VARIABLE=VALUE from vars to MAKE_ENV_ARGS
|
||||
# add list of arguments from file to MAKE_ENV_ARGS
|
||||
# add list of VARIABLE=VALUE from vars to MAKE_ARGS
|
||||
# add list of arguments from file to MAKE_ARGS
|
||||
# eval MAKE_DIR option to -C $(2) if $(2) given
|
||||
# add current target to MAKE_OLDFILE (list of already fired targets)
|
||||
# print command that will be run if VERBOSE mode
|
||||
@@ -155,13 +148,13 @@ define make
|
||||
$(eval dir := $(2))
|
||||
$(eval vars := $(3))
|
||||
$(eval file := $(4))
|
||||
$(if $(vars),$(eval MAKE_ENV_ARGS += $(foreach var,$(vars),$(if $($(var)),$(var)='$($(var))'))))
|
||||
$(if $(wildcard $(file)),$(eval MAKE_ENV_ARGS += $(shell cat $(file) |sed '/^$$/d; /^#/d; /=/!d; s/^[[\s\t]]*//; s/[[\s\t]]*=[[\s\t]]*/=/;' |awk -F '=' '{print $$1"='\''"$$2"'\''"}')))
|
||||
$(if $(vars),$(eval MAKE_ARGS += $(foreach var,$(vars),$(if $($(var)),$(var)='$($(var))'))))
|
||||
$(if $(wildcard $(file)),$(eval MAKE_ARGS += $(shell cat $(file) |sed '/^$$/d; /^#/d; /=/!d; s/^[[\s\t]]*//; s/[[\s\t]]*=[[\s\t]]*/=/;' |awk -F '=' '{print $$1"='\''"$$2"'\''"}')))
|
||||
$(eval MAKE_DIR := $(if $(dir),-C $(dir)))
|
||||
$(eval MAKE_OLDFILE += $(filter-out $(MAKE_OLDFILE), $^))
|
||||
$(if $(filter $(VERBOSE),true),printf '${COLOR_GREEN}Running${COLOR_RESET} "'"make $(MAKE_ENV_ARGS) $(cmd)"'" $(if $(dir),${COLOR_BLUE}in folder${COLOR_RESET} $(dir) )\n')
|
||||
$(ECHO) $(MAKE) $(MAKE_DIR) $(patsubst %,-o %,$(MAKE_OLDFILE)) MAKE_OLDFILE="$(MAKE_OLDFILE)" $(MAKE_ENV_ARGS) $(cmd)
|
||||
$(if $(filter $(DRYRUN_RECURSIVE),true),$(MAKE) $(MAKE_DIR) $(patsubst %,-o %,$(MAKE_OLDFILE)) MAKE_OLDFILE="$(MAKE_OLDFILE)" DRYRUN=$(DRYRUN) RECURSIVE=$(RECURSIVE) $(MAKE_ENV_ARGS) $(cmd))
|
||||
$(if $(filter $(VERBOSE),true),printf '${COLOR_GREEN}Running${COLOR_RESET} "'"make $(MAKE_ARGS) $(cmd)"'" $(if $(dir),${COLOR_BLUE}in folder${COLOR_RESET} $(dir) )\n')
|
||||
$(ECHO) $(MAKE) $(MAKE_DIR) $(patsubst %,-o %,$(MAKE_OLDFILE)) MAKE_OLDFILE="$(MAKE_OLDFILE)" $(MAKE_ARGS) $(cmd)
|
||||
$(if $(filter $(DRYRUN_RECURSIVE),true),$(MAKE) $(MAKE_DIR) $(patsubst %,-o %,$(MAKE_OLDFILE)) MAKE_OLDFILE="$(MAKE_OLDFILE)" DRYRUN=$(DRYRUN) RECURSIVE=$(RECURSIVE) $(MAKE_ARGS) $(cmd))
|
||||
endef
|
||||
|
||||
pop = $(patsubst %$(or $(2),/)$(lastword $(subst $(or $(2),/), ,$(1))),%,$(1))
|
||||
|
||||
Reference in New Issue
Block a user