#!/bin/bash

CYAN='\E[1;36m'
YELLOW='\E[1;33m'
BLUE='\E[1;34m'
GREEN='\E[1;32m'
RED='\E[1;31m'
RESET='\E[0m'

if [ "$1" == "" ]; then
	echo "Waits for a docker container to be healthy."
	echo "Usage: $0 docker-container"
	exit 1
fi

SERVICE=$1
LOOPCOUNT=0
HEALTHY=
LIMIT=${2:-90}

echo -e "${BLUE}❯ ${CYAN}Waiting for healthy: ${YELLOW}${SERVICE}${RESET}"

until [ "${HEALTHY}" = "healthy" ]; do
	echo -n "."
	sleep 1
	HEALTHY="$(docker inspect -f '{{.State.Health.Status}}' $SERVICE)"
	((LOOPCOUNT++))

	if [ "$LOOPCOUNT" == "$LIMIT" ]; then
		echo ""
		echo ""
		echo -e "${BLUE}❯ ${RED}Timed out waiting for healthy${RESET}"
		exit 1
	fi
done

echo ""
echo -e "${BLUE}❯ ${GREEN}Healthy!${RESET}"