#!/bin/bash -x
set -uo pipefail

BIN=$(dirname $BASH_SOURCE)
source ${BIN}/modules/utils.sh
source ${BIN}/modules/docker.sh

# You can override this in the environment if you want; which is helpful for testing.
ORG=${ORG:-"gds"}

echo 

if [ $# -eq 0 ]; then
	echo "Rebuilding and republishing all docker base images"
	
	context=$(pwd)
	tag="latest"

	for dockerfile in `find images/docker -name 'Dockerfile'`; do
		dirname=$(dirname ${dockerfile})
		dockerignore="${dirname}/.dockerignore"
		image_name=$(dirname ${dockerfile} | xargs basename)

		rm -f .dockerignore

		if [ -f ${dockerignore} ]; then
			cp ${dockerignore} .
		else
			utils::prepdockerignore images
		fi

		utils::check "building ${dockerfile} docker image" \
			docker build -t docker.internal.justin.tv/${ORG}/${image_name}:${tag} -f ${dockerfile} ${context}

		docker::publish ${image_name} ${ORG} "latest"
	done
else
	for image_name in "$@"; do
		echo "Rebuilding and republishing docker base image for ${image_name}"

		context=$(pwd)
		tag="latest"
		dockerfile="images/docker/${image_name}/Dockerfile"
		dockerignore="images/docker/${image_name}/.dockerignore"

		if [ ! -f ${dockerfile} ]; then
			echo "There is no Dockerfile for image ${image_name}"
			exit 1
		fi
		
		rm -f .dockerignore

		if [ -f ${dockerignore} ]; then
			cp ${dockerignore} .
		else
			utils::prepdockerignore images
		fi

		utils::check "building ${dockerfile} docker image" \
			docker build -t docker.internal.justin.tv/${ORG}/${image_name}:${tag} -f ${dockerfile} ${context}

		docker::publish ${image_name} ${ORG} "latest"
	done
fi
