#!/bin/bash -e

set +x

# Login to ECR
aws ecr get-login-password | docker login --username AWS --password-stdin "${ECR_ACCOUNT_ID}.dkr.ecr.${AWS_DEFAULT_REGION}.amazonaws.com"

# Get current image details
MANIFEST=$(aws ecr batch-get-image --registry-id "${ECR_ACCOUNT_ID}" --repository-name "${ECR}" --image-ids imageTag="${GIT_COMMIT}" --query 'images[].imageManifest' --output text)
DIGEST=$(aws ecr batch-get-image --registry-id "${ECR_ACCOUNT_ID}" --repository-name "${ECR}" --image-ids imageTag="${GIT_COMMIT}" --query 'images[0].imageId.imageDigest' --output text)
printf '%s\n' "Image digest for ${GIT_COMMIT} is ${DIGEST}"
# Retag image
aws ecr put-image --registry-id "${ECR_ACCOUNT_ID}" --repository-name "${ECR}" --image-tag latest --image-manifest "${MANIFEST}"
# Check to make sure digest matches
NEW_DIGEST=$(aws ecr batch-get-image --registry-id "${ECR_ACCOUNT_ID}" --repository-name "${ECR}" --image-ids imageTag=latest --query 'images[0].imageId.imageDigest' --output text)
if [ "${DIGEST}" = "${NEW_DIGEST}" ]; then
  printf '%s\n' "Image has been retagged and digests match"
else
  printf '%s\n' "Digests do not match, so image has not been retagged successfully. The resulting state is unknown." && exit 1
fi
