This is an automated email from the ASF dual-hosted git repository.

bzp2010 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/apisix-docker.git


The following commit(s) were added to refs/heads/master by this push:
     new a6129d1  feat: more human friendly makefile output (#219)
a6129d1 is described below

commit a6129d1d3d9c06dedc0408d76d253d37adcad60c
Author: leslie <[email protected]>
AuthorDate: Tue Sep 14 11:35:00 2021 +0800

    feat: more human friendly makefile output (#219)
    
    * feat: more human friendly makefile output
    
    Signed-off-by: Leslie <[email protected]>
    
    * bugfix: remove extra shell options
    
    Signed-off-by: Leslie <[email protected]>
    
    * chore: remove unused define
    
    Signed-off-by: Leslie <[email protected]>
---
 Makefile | 132 +++++++++++++++++++++++++++++++++++++++++++++++----------------
 1 file changed, 99 insertions(+), 33 deletions(-)

diff --git a/Makefile b/Makefile
index 41759e9..208a6fd 100644
--- a/Makefile
+++ b/Makefile
@@ -14,8 +14,12 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-default: help
 
+# Makefile basic env setting
+.DEFAULT_GOAL := help
+
+
+# APISIX ARGS
 APISIX_VERSION ?= 2.9
 IMAGE_NAME = apache/apisix
 IMAGE_TAR_NAME = apache_apisix
@@ -24,69 +28,131 @@ APISIX_DASHBOARD_VERSION ?= 2.8
 APISIX_DASHBOARD_IMAGE_NAME = apache/apisix-dashboard
 APISIX_DASHBOARD_IMAGE_TAR_NAME = apache_apisix_dashboard
 
-### build-on-centos:      Build apache/apisix:xx-centos image
+
+# Makefile ENV
+ENV_OS_NAME                ?= $(shell uname -s | tr '[:upper:]' '[:lower:]')
+ENV_APISIX_TAR_NAME        ?= $(IMAGE_TAR_NAME)_$(APISIX_VERSION)
+ENV_APISIX_IMAGE_TAG_NAME  ?= $(IMAGE_NAME):$(APISIX_VERSION)
+ENV_DOCKER                 ?= docker
+
+
+# Makefile basic extension function
+_color_red    =\E[1;31m
+_color_green  =\E[1;32m
+_color_yellow =\E[1;33m
+_color_blue   =\E[1;34m
+_color_wipe   =\E[0m
+
+
+define func_echo_status
+       printf "[$(_color_blue) info $(_color_wipe)] %s\n" $(1)
+endef
+
+
+define func_echo_warn_status
+       printf "[$(_color_yellow) info $(_color_wipe)] %s\n" $(1)
+endef
+
+
+define func_echo_success_status
+       printf "[$(_color_green) info $(_color_wipe)] %s\n" $(1)
+endef
+
+
+# Makefile target
+### build-on-centos : Build apache/apisix:xx-centos image
+.PHONY: build-on-centos
 build-on-centos:
-       docker build -t $(IMAGE_NAME):$(APISIX_VERSION)-centos -f 
./centos/Dockerfile .
+       $(ENV_DOCKER) build -t $(ENV_APISIX_IMAGE_TAG_NAME)-centos -f 
./centos/Dockerfile .
 
-### build-on-alpine:      Build apache/apisix:xx-alpine image
+
+### build-on-alpine : Build apache/apisix:xx-alpine image
+.PHONY: build-on-alpine
 build-on-alpine:
-       docker build -t $(IMAGE_NAME):$(APISIX_VERSION)-alpine -f 
./alpine/Dockerfile .
+       $(ENV_DOCKER) build -t $(ENV_APISIX_IMAGE_TAG_NAME)-alpine -f 
./alpine/Dockerfile .
+
 
-### build-on-alpine-local:      Build apache/apisix:xx-alpine-local image
+### build-on-alpine-local : Build apache/apisix:xx-alpine-local image
 # Actually it is not build on certain version but on local code
 # Use this name (in the same patterns with others) for convenient CI
+.PHONY: build-on-alpine-local
 build-on-alpine-local:
-       docker build -t $(IMAGE_NAME):$(APISIX_VERSION)-alpine-local 
--build-arg APISIX_PATH=${APISIX_PATH} -f ./alpine-local/Dockerfile .
+       $(ENV_DOCKER) build -t $(ENV_APISIX_IMAGE_TAG_NAME)-alpine-local 
--build-arg APISIX_PATH=${APISIX_PATH} -f ./alpine-local/Dockerfile .
 
-### push-on-centos:       Push apache/apisix:xx-centos image
+
+### push-on-centos : Push apache/apisix:xx-centos image
 # centos not support multiarch since it reply on x86 rpm package
+.PHONY: push-on-centos
 push-on-centos:
-       docker push $(IMAGE_NAME):$(APISIX_VERSION)-centos
-       docker build -t $(IMAGE_NAME):latest -f ./centos/Dockerfile .
-       docker push $(IMAGE_NAME):latest
+       $(ENV_DOCKER) push $(ENV_APISIX_IMAGE_TAG_NAME)-centos
+       $(ENV_DOCKER) build -t $(IMAGE_NAME):latest -f ./centos/Dockerfile .
+       $(ENV_DOCKER) push $(IMAGE_NAME):latest
+
 
-### push-on-alpine:       Push apache/apisix:xx-alpine image
+### push-on-alpine : Push apache/apisix:xx-alpine image
+.PHONY: push-multiarch-on-alpine
 push-multiarch-on-alpine:
-       docker buildx build --push \
-               -t $(IMAGE_NAME):$(APISIX_VERSION)-alpine \
+       $(ENV_DOCKER) buildx build --push \
+               -t $(ENV_APISIX_IMAGE_TAG_NAME)-alpine \
                --platform linux/amd64,linux/arm64 \
                -f ./alpine/Dockerfile .
 
-### build-on-alpine-cn:                 Build apache/apisix:xx-alpine image 
(for chinese)
+
+### build-on-alpine-cn : Build apache/apisix:xx-alpine image (for chinese)
+.PHONY: build-on-alpine-cn
 build-on-alpine-cn:
-       docker build -t $(IMAGE_NAME):${APISIX_VERSION}-alpine --build-arg 
APISIX_VERSION=${APISIX_VERSION} --build-arg ENABLE_PROXY=true -f 
alpine/Dockerfile alpine
+       $(ENV_DOCKER) build -t $(IMAGE_NAME):${APISIX_VERSION}-alpine 
--build-arg APISIX_VERSION=${APISIX_VERSION} --build-arg ENABLE_PROXY=true -f 
alpine/Dockerfile alpine
+
 
-### build-all-in-one:           Build All in one Docker container for Apache 
APISIX
+### build-all-in-one : Build All in one Docker container for Apache APISIX
+.PHONY: build-all-in-one
 build-all-in-one:
-       docker build -t $(IMAGE_NAME):whole -f ./all-in-one/apisix/Dockerfile .
+       $(ENV_DOCKER) build -t $(IMAGE_NAME):whole -f 
./all-in-one/apisix/Dockerfile .
+
 
-### save-centos-tar:      tar apache/apisix:xx-centos image
+### save-centos-tar : tar apache/apisix:xx-centos image
+.PHONY: save-centos-tar
 save-centos-tar:
        mkdir -p package
-       docker save -o ./package/$(IMAGE_TAR_NAME)_$(APISIX_VERSION)-centos.tar 
$(IMAGE_NAME):$(APISIX_VERSION)-centos
+       $(ENV_DOCKER) save -o ./package/$(ENV_APISIX_TAR_NAME)-centos.tar 
$(ENV_APISIX_IMAGE_TAG_NAME)-centos
 
-### save-alpine-tar:      tar apache/apisix:xx-alpine image
+
+### save-alpine-tar : tar apache/apisix:xx-alpine image
+.PHONY: save-alpine-tar
 save-alpine-tar:
        mkdir -p package
-       docker save -o ./package/$(IMAGE_TAR_NAME)_$(APISIX_VERSION)-alpine.tar 
$(IMAGE_NAME):$(APISIX_VERSION)-alpine
+       $(ENV_DOCKER) save -o ./package/$(ENV_APISIX_TAR_NAME)-alpine.tar 
$(ENV_APISIX_IMAGE_TAG_NAME)-alpine
+
 
-### build-dashboard:   Build apache/dashboard:tag image
+### build-dashboard : Build apache/dashboard:tag image
+.PHONY: build-dashboard
 build-dashboard:
-       docker build -t 
$(APISIX_DASHBOARD_IMAGE_NAME):$(APISIX_DASHBOARD_VERSION) -f 
./dashboard/Dockerfile .
+       $(ENV_DOCKER) build -t 
$(APISIX_DASHBOARD_IMAGE_NAME):$(APISIX_DASHBOARD_VERSION) -f 
./dashboard/Dockerfile .
+
 
-### push-dashboard:     Push apache/dashboard:tag image
+### push-dashboard : Push apache/dashboard:tag image
+.PHONY: push-dashboard
 push-dashboard:
-       docker push $(APISIX_DASHBOARD_IMAGE_NAME):$(APISIX_DASHBOARD_VERSION)
-       docker build -t $(APISIX_DASHBOARD_IMAGE_NAME):latest -f 
./dashboard/Dockerfile .
-       docker push $(APISIX_DASHBOARD_IMAGE_NAME):latest
+       $(ENV_DOCKER) push 
$(APISIX_DASHBOARD_IMAGE_NAME):$(APISIX_DASHBOARD_VERSION)
+       $(ENV_DOCKER) build -t $(APISIX_DASHBOARD_IMAGE_NAME):latest -f 
./dashboard/Dockerfile .
+       $(ENV_DOCKER) push $(APISIX_DASHBOARD_IMAGE_NAME):latest
 
-### save-dashboard-tar:      tar apache/apisix-dashboard:tag image
+
+### save-dashboard-tar : tar apache/apisix-dashboard: tag image
+.PHONY: save-dashboard-tar
 save-dashboard-tar:
        mkdir -p package
-       docker save -o 
./package/$(APISIX_DASHBOARD_IMAGE_TAR_NAME)_$(APISIX_DASHBOARD_VERSION).tar 
$(APISIX_DASHBOARD_IMAGE_NAME):$(APISIX_DASHBOARD_VERSION)
+       $(ENV_DOCKER) save -o 
./package/$(APISIX_DASHBOARD_IMAGE_TAR_NAME)_$(APISIX_DASHBOARD_VERSION).tar 
$(APISIX_DASHBOARD_IMAGE_NAME):$(APISIX_DASHBOARD_VERSION)
+
 
-### help:                Show Makefile rules
+### help : Show Makefile rules
+.PHONY: help
 help:
-       @echo Makefile rules:
+       @$(call func_echo_success_status, "Makefile rules:")
+       @echo
+       @if [ '$(ENV_OS_NAME)' = 'darwin' ]; then \
+               awk '{ if(match($$0, /^#{3}([^:]+):(.*)$$/)){ split($$0, res, 
":"); _desc=$$0; gsub(/^#{3}([^:]+):[ \t]*/, "", _desc); printf("    make %-25s 
: %-10s\n", $$2, _desc) } }' Makefile; \
+       else \
+               awk '{ if(match($$0, /^\s*#{3}\s*([^:]+)\s*:\s*(.*)$$/, res)){ 
printf("    make %-25s : %-10s\n", res[1], res[2]) } }' Makefile; \
+       fi
        @echo
-       @grep -E '^### [-A-Za-z0-9_]+:' Makefile | sed 's/###/   /'

Reply via email to