set -euo pipefail

AWS_REGION=${region:-eu-west-1}
AWS_DEPLOYMENT_ACCOUNT=${account:-463722570299}
AWS_REPOSITORY=${repo:-"${AWS_DEPLOYMENT_ACCOUNT}.dkr.ecr.${AWS_REGION}.amazonaws.com"}

STAGE=${stage:-"dev"}
SHA_SHORT="$(git rev-parse --short HEAD)"
CUR_DATE="$(date +%Y%m%d%H%M%S)"
VERSION="$STAGE-$CUR_DATE-$SHA_SHORT"
IMAGE_NAME=${image_name:-promethai-${STAGE}-promethai-backend}

REPO_NAME="${AWS_REPOSITORY}/${IMAGE_NAME}"
FULL_IMAGE_NAME="${REPO_NAME}:${VERSION}"
APP_DIR=${app_dir:-"."}

PUBLISH=${publish:-false}

echo "Building docker image ${FULL_IMAGE_NAME} located in dir ${app_dir}"

pushd "${APP_DIR}" &&
  docker buildx build --platform linux/amd64 \
    --build-arg STAGE=${STAGE} \
    -t "${FULL_IMAGE_NAME}" . &&
  echo "${VERSION}" >/tmp/.DOCKER_IMAGE_VERSION &&
  echo "Successfully built docker image ${FULL_IMAGE_NAME}"

if [ "${PUBLISH}" = true ]; then
  echo "Pushing docker image ${FULL_IMAGE_NAME} to ECR repository to AWS account ${AWS_DEPLOYMENT_ACCOUNT}"
  if [ "${PUBLISH}" = true ]; then
    echo "logging in"
    aws ecr get-login-password --region "${AWS_REGION}" | docker login --username AWS --password-stdin "${AWS_REPOSITORY}"
  fi
  docker push "${FULL_IMAGE_NAME}" &&
    echo "Successfully pushed docker image ${FULL_IMAGE_NAME} to ECR repository"
fi