#!/bin/bash
SOURCE_REGION=us-west-2
TARGET_REGION=us-east-1
MATCH_PREFIX=tidbcloud
SOURCE_ACCOUNT=385595570414
TARGET_ACCOUNT=385595570414
SOURCE_PROFILE=dbaas-dev
TARGET_PROFILE=dbaas-dev

# login to source account and region
aws ecr get-login-password --region ${SOURCE_REGION} --profile ${SOURCE_PROFILE} | docker login --username AWS --password-stdin ${SOURCE_ACCOUNT}.dkr.ecr.${SOURCE_REGION}.amazonaws.com
# login to target account and region
aws ecr get-login-password --region ${TARGET_REGION} --profile ${TARGET_PROFILE} | docker login --username AWS --password-stdin ${TARGET_ACCOUNT}.dkr.ecr.${TARGET_REGION}.amazonaws.com

REPO_LIST=($(aws ecr describe-repositories --query "repositories[].[repositoryUri]" --output text --no-cli-pager --region ${SOURCE_REGION} | grep $MATCH_PREFIX ))
REPO_NAME=($(aws ecr describe-repositories --query 'repositories[].[repositoryName]' --output text --no-cli-pager --region ${SOURCE_REGION} | grep $MATCH_PREFIX ))
for repo_url in ${!REPO_LIST[@]}; do
        echo "list images for repo ${REPO_LIST[$repo_url]}"
        TAGS=($(aws ecr describe-images --repository-name ${REPO_NAME[$repo_url]} --query "imageDetails[].imageTags[]" --output text --no-cli-pager --region ${SOURCE_REGION}))
        for tag in ${!TAGS[@]}; do
            echo "pulling images ${REPO_LIST[$repo_url]}:${TAGS[$tag]}"
            docker pull  ${REPO_LIST[$repo_url]}:${TAGS[$tag]}
            docker tag ${REPO_LIST[$repo_url]}:${TAGS[$tag]} ${TARGET_ACCOUNT}.dkr.ecr.${TARGET_REGION}.amazonaws.com/${REPO_NAME[$repo_url]}:${TAGS[$tag]}
            aws ecr create-repository --repository-name ${REPO_NAME[$repo_url]} --region ${TARGET_REGION} --profile ${TARGET_PROFILE} --output text --no-cli-pager
            docker push ${TARGET_ACCOUNT}.dkr.ecr.${TARGET_REGION}.amazonaws.com/${REPO_NAME[$repo_url]}:${TAGS[$tag]}
        done
done
