From bc94d383489f600587b1e2169b7d55c325be345e Mon Sep 17 00:00:00 2001 From: Yann Autissier Date: Thu, 18 Dec 2025 04:42:18 +0100 Subject: [PATCH] auto install app --- make/apps/def.docker.mk | 1 + make/apps/def.mk | 1 - make/common.mk | 18 +++++++++++------- make/def.app.mk | 5 ++--- make/def.docker.mk | 2 +- make/def.mk | 11 ++++++++++- 6 files changed, 25 insertions(+), 13 deletions(-) diff --git a/make/apps/def.docker.mk b/make/apps/def.docker.mk index 2e2d1f9..5a0872c 100644 --- a/make/apps/def.docker.mk +++ b/make/apps/def.docker.mk @@ -77,6 +77,7 @@ define compose-file $(eval suffix := $(or $(3),$(COMPOSE_FILE_SUFFIX))) $(eval extension := $(or $(4),yml yaml)) $(eval COMPOSE_FILE += $(wildcard $(foreach e,$(extension),$(foreach n,$(name),$(foreach p,$(path),$(p)/$(n).$(e) $(p)/$(n).$(ENV).$(e) $(p)/$(ENV)/$(n).$(e) $(p)/$(ENV)/$(n).$(ENV).$(e) $(foreach s,$(suffix),$(p)/$(n).$(s).$(e) $(p)/$(n).$(s).$(ENV).$(e))))))) + $(call debug,COMPOSE_FILE) endef # function docker-build: Build docker image define docker-build diff --git a/make/apps/def.mk b/make/apps/def.mk index eaaf0d3..c4aa81b 100644 --- a/make/apps/def.mk +++ b/make/apps/def.mk @@ -22,7 +22,6 @@ APP_SCHEME ?= http APP_UPSTREAM_REPOSITORY ?= $(or $(shell git config --get remote.upstream.url 2>/dev/null),$(GIT_UPSTREAM_REPOSITORY)) APP_URI ?= $(patsubst %,%/$(APP_PATH),$(APP_HOST)) APP_URL ?= $(patsubst %,$(APP_SCHEME)://%,$(APP_URI)) -APP_VERSION ?= $(VERSION) CONTEXT += APP APPS BRANCH DOMAIN VERSION RELEASE CONTEXT_DEBUG += APP_DIR APP_URL APP_REPOSITORY APP_UPSTREAM_REPOSITORY ENV_DEPLOY ENV_DEPLOY ?= $(patsubst origin/%,%,$(shell git rev-parse --symbolic --remotes=origin 2>/dev/null |sed '/origin\/HEAD/d')) diff --git a/make/common.mk b/make/common.mk index b689094..478f17e 100644 --- a/make/common.mk +++ b/make/common.mk @@ -4,7 +4,9 @@ # target $(APP): Call app-update .PHONY: $(APP) $(APP): APP_DIR := $(RELATIVE)$(APP) -$(APP): myos-user +$(APP) $(APP_DIR): + echo APP: $(APP) + echo APP_DIR: $(APP_DIR) $(call app-update) # target app-%: Call app-$(command) for APP in APP_DIR @@ -13,12 +15,14 @@ $(APP): myos-user ## it includes apps/$(app)/*.mk file and hydrates APP_* variables ## ex: APP_REPOSITORY_URL is set with value from variable $(APP)_REPOSITORY_URL .PHONY: app-% -app-%: +app-%: APP_DIR := $(RELATIVE)$(APP) +app-%: $(APP_DIR) + $(eval APP_REPOSITORY_URL :=) $(eval COMPOSE_FILE :=) $(eval STACK :=) $(eval app := $(subst -$(lastword $(subst -, ,$*)),,$*)) $(eval command := $(lastword $(subst -, ,$*))) - $(eval include $(wildcard apps/def.mk apps/$(app).mk apps/$(app)/*.mk)) + $(eval include $(wildcard $(foreach stack_dir,$(STACK_DIR),$(stack_dir)/$(app).mk $(stack_dir)/$(app)/*.mk))) $(foreach var,$(filter $(call UPPERCASE,$(app))_%,$(MAKE_FILE_VARS)), \ $(if $(filter $(subst $(call UPPERCASE,$(app))_,APP_,$(var)),$(MAKE_FILE_VARS)), \ $(eval $(subst $(call UPPERCASE,$(app))_,APP_,$(var)) := $($(var))) \ @@ -36,7 +40,7 @@ app-%: ) \ ) \ , \ - $(if $($(call UPPERCASE,$(APP))_REPOSITORY_URL), \ + $(if $(APP_REPOSITORY_URL), \ $(call app-install) \ $(call app-bootstrap) \ ,$(call WARNING,Unable to find app,$(app),in dir,$(RELATIVE)$(app)) \ @@ -110,17 +114,17 @@ endif # target update-remote-%: fetch git remote % .PHONY: update-remote-% -update-remote-%: myos-user +update-remote-%: $(RUN) git fetch --prune --tags $* # target update-remotes: fetch all git remotes .PHONY: update-remotes -update-remotes: myos-user +update-remotes: $(RUN) git fetch --all --prune --tags # target update-upstream: fetch git remote upstream .PHONY: update-upstream -update-upstream: myos-user .git/refs/remotes/upstream/master +update-upstream: .git/refs/remotes/upstream/master $(RUN) git fetch --prune --tags upstream # target .git/refs/remotes/upstream/master: add git upstream APP_UPSTREAM_REPOSITORY diff --git a/make/def.app.mk b/make/def.app.mk index 98b62c0..96aa25d 100644 --- a/make/def.app.mk +++ b/make/def.app.mk @@ -23,10 +23,9 @@ define app-bootstrap $(eval COMPOSE_SERVICE_NAME := $(or $(DOCKER_COMPOSE_SERVICE_NAME),$(subst _,-,$(COMPOSE_PROJECT_NAME)))) $(eval DOCKER_BUILD_DIR := $(APP_DIR)) $(call compose-file,$(APP_DIR) $(APP_DIR)/$(or $(APP_DOCKER_DIR),$(DOCKER_DIR)),docker-compose) - $(call compose-file,apps apps/$(APP),$(APP)) - $(eval APP_COMPOSE_FILE ?= $(COMPOSE_FILE)) - $(foreach stackz,$(or $(DOCKER_STACK),$(STACK)),$(call docker-stack,$(stackz))) $(call compose-file,$(MYOS_STACK),$(MYOS_STACK_FILE)) + $(eval APP_COMPOSE_FILE ?= $(COMPOSE_FILE)) + $(call docker-stack,$(APP)) $(call .env,$(APP_DIR)/.env,$(APP_DIR)/.env.dist $(APP_DIR)/.env.example $(APP_DIR)/.env.sample) endef diff --git a/make/def.docker.mk b/make/def.docker.mk index 4bffab7..4de5583 100644 --- a/make/def.docker.mk +++ b/make/def.docker.mk @@ -37,7 +37,7 @@ MYOS_STACK ?= $(foreach stack_dir,$(STACK_DIR),$(MYOS)/$(st MYOS_STACK_FILE ?= networks volumes RESU_DOCKER_REPOSITORY ?= $(subst -,/,$(USER_COMPOSE_PROJECT_NAME)) STACK ?= $(APP) -STACK_DIR ?= ../stack +STACK_DIR ?= ../mystack USER_COMPOSE_PROJECT_NAME ?= $(subst .,-,$(RESU)) USER_COMPOSE_SERVICE_NAME ?= $(USER_COMPOSE_PROJECT_NAME) USER_DOCKER_IMAGE ?= $(USER_DOCKER_REPOSITORY):${DOCKER_IMAGE_TAG} diff --git a/make/def.mk b/make/def.mk index 1cb4cbf..4c1e593 100644 --- a/make/def.mk +++ b/make/def.mk @@ -20,6 +20,7 @@ CMD_APT_REMOVE ?= $(if $(shell type -p apt-get),apt-get -fy rem COLOR_BLUE ?= \033[01;34m COLOR_BROWN ?= \033[33m COLOR_CYAN ?= \033[36m +COLOR_DEBUG ?= $(COLOR_BLUE) COLOR_DGRAY ?= \033[30m COLOR_ERROR ?= $(COLOR_RED) COLOR_GRAY ?= \033[37m @@ -146,7 +147,15 @@ endif # include .env files include $(wildcard $(ENV_FILE)) -ERROR_FD := 2 +DEBUG_FD := 2 +# macro debug: print variable content when DEBUG +debug = $(if $(DEBUG), \ + printf '${COLOR_INFO}$(APP)${COLOR_RESET}[${COLOR_VALUE}$(MAKELEVEL)${COLOR_RESET}]$(if $@, ${COLOR_VALUE}$@${COLOR_RESET}):${COLOR_RESET} ' >&$(DEBUG_FD) \ + $(foreach variable,$(1),&& printf '${COLOR_DEBUG}$(variable):${COLOR_RESET} ${COLOR_VALUE}$($(variable))${COLOR_RESET}, ' >&$(DEBUG_FD)) \ + && printf '\n' >&$(DEBUG_FD) \ +) + + ERROR_FD := 2 # macro ERROR: print colorized warning ERROR = \ printf '${COLOR_ERROR}ERROR:${COLOR_RESET} ${COLOR_INFO}$(APP)${COLOR_RESET}[${COLOR_VALUE}$(MAKELEVEL)${COLOR_RESET}]$(if $@, ${COLOR_VALUE}$@${COLOR_RESET}):${COLOR_RESET} ' >&$(ERROR_FD) \