The code in this file is probably a bit more involved and harder to decipher, but it is just parsing functions really.
To get useful data from docker and/or env variables
Makefile.settings:
YELLOW:="\e[1;33m"NC:="\e[0m"INFO:= @bash -c'printf $(YELLOW); echo "=> $$1"; printf $(NC)' MESSAGE
ARGS:=$(wordlist 2,$(words$(MAKECMDGOALS)),$(MAKECMDGOALS))SHELL= bash
# Slave arguments
ifeq($(firstword $(MAKECMDGOALS)),$(filter $(firstword $(MAKECMDGOALS)),slave))SLAVE_ARGS:=$(wordlist 2,$(words$(MAKECMDGOALS)),$(MAKECMDGOALS))SLAVE_COUNT=$(if$(SLAVE_ARGS),$(firstword$(SLAVE_ARGS)),1)endif# Docker host settings
DOCKER_HOST_IP:=$(shellecho$$DOCKER_HOST | awk-F/ '{printf $$3}' | awk-F: '{printf $$1}')DOCKER_HOST_IP:=$(if$(DOCKER_HOST_IP),$(DOCKER_HOST_IP),localhost)# Image and Repository Tag introspection functions
# Syntax: $(call get_image_id,<docker-compose-environment>,<service-name>)
# Syntax: $(call get_repo_tags,<docker-compose-environment>,<service-name>,<fully-qualified-image-name>)
get_container_id=$$(docker-compose $(1) ps -q$(2))get_image_id=$$(echo$(call get_container_id,$(1),$(2)) | xargs -I ARGS docker inspect -f'{{ .Image }}' ARGS)get_container_state=$$(echo$(call get_container_id,$(1),$(2)) | xargs -I ID docker inspect -f'$(3)' ID)filter_repo_tags=$(if$(findstring docker.io,$(1)),$(subst docker.io/,,$(1))[^[:space:]|\$$]*,$(1)[^[:space:]|\$$]*)get_repo_tags=$$(echo$(call get_image_id,$(1),$(2)) | xargs -I ID docker inspect -f'{{range .RepoTags}}{{.}} {{end}}' ID | grep-oh"$(callfilter_repo_tags,$(3))" | xargs)# Port introspection functions
# Syntax: $(call get_port_mapping,<service-name>,<internal-port>)
get_raw_port_mapping=$$(docker-compose ps -q$(1) | xargs -I ID docker port ID $(2))get_port_mapping=$$(echo$$(IFS=':'read-r-a array <<<"$(callget_raw_port_mapping,$(1),$(2))"&&echo"$${array[1]}"))# Service health functions
# Syntax: $(call check_service_health,<docker-compose-environment>,<service-name>)
get_service_health=$$(echo$(call get_container_state,$(1),$(2),{{if .State.Running}}{{ .State.Health.Status }}{{end}}))check_service_health={\until[[$(call get_service_health,$(1),$(2))!= starting ]];\do sleep 1;\done;\if[[$(call get_service_health,$(1),$(2))!= healthy ]];\then echo$(2) failed health check;exit 1;\fi;\}# AWS assume role settings
# Attempts to assume IAM role using STS
# Syntax: $(call assume_role,<role-arn>)
get_assume_session= aws sts assume-role --role-arn=$(1)--role-session-name=admin
get_assume_credential= jq --null-input'$(1)' | jq .Credentials.$(2)-rdefineassume_role$(evalAWS_SESSION=$(shell$(call get_assume_session,$(1))))$(evalexport AWS_ACCESS_KEY_ID=$(shell$(call get_assume_credential,$(AWS_SESSION),AccessKeyId)))$(evalexport AWS_SECRET_ACCESS_KEY=$(shell$(call get_assume_credential,$(AWS_SESSION),SecretAccessKey)))$(evalexport AWS_SESSION_TOKEN=$(shell$(call get_assume_credential,$(AWS_SESSION),SessionToken)))endef
Hi,
The code in this file is probably a bit more involved and harder to decipher, but it is just parsing functions really.
To get useful data from docker and/or env variables
Makefile.settings
:Just the first 3 lines are worth it