#!/bin/bash
#
# PBA docker push wrapper
#
# (C) ITEG IT-Engineers GmbH 2010-2026
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# 
#   http://www.apache.org/licenses/LICENSE-2.0
# 
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

# pba-docker-push
#
# Tags and pushes the docker image specified by pba-docker-settings.txt as
# $IMAGE_REGISTRY/$IMAGE_NAME:$IMAGE_TAG in addition to $IMAGE_NAME:$IMAGE_TAG
# and pushes it to the IMAGE_REGISTRIES specified as $IMAGE_REGISTRY/$IMAGE_NAME:$IMAGE_TAG
#
# If the image is not present locally it is rebuilt automatically by calling pba-docker-build

# params

. pba-docker-checksettings || exit $?
# exit values <20 come from there

if [ -z "${IMAGE_REGISTRIES}" ] ; then
  echo "ERROR: pba-docker-settings.txt gave us no IMAGE_REGISTRIES value."
  exit 11
fi

OLDIMAGE_ID=$(docker images --format "{{.ID}}" ${IMAGE_NAME}:${IMAGE_TAG})
if [ -z "${OLDIMAGE_ID}" ] ; then
  echo "INFO: Found no image ${IMAGE_NAME}:${IMAGE_TAG}, calling pba-docker-build ..."
  pba-docker-build || exit 21
fi

for IMAGE_REGISTRY in ${IMAGE_REGISTRIES} ; do
  for IMAGE_TAG in ${IMAGE_TAGS} ; do
    echo "INFO: Calling   docker tag ${IMAGE_NAME}:${IMAGE_TAG} ${IMAGE_REGISTRY}/${IMAGE_NAME}:${IMAGE_TAG}"
    docker tag ${IMAGE_NAME}:${IMAGE_TAG} ${IMAGE_REGISTRY}/${IMAGE_NAME}:${IMAGE_TAG} || exit 31
    echo "GOOD: Successfully tagged image ${IMAGE_NAME}:${IMAGE_TAG} as ${IMAGE_REGISTRY}/${IMAGE_NAME}:${IMAGE_TAG}"
    if [ "$1" = "--push" ] ; then
      echo "INFO: Calling   docker image push ${IMAGE_REGISTRY}/${IMAGE_NAME}:${IMAGE_TAG}"
      docker image push ${IMAGE_REGISTRY}/${IMAGE_NAME}:${IMAGE_TAG} || exit 32
     echo "GOOD: Successfully pushed image ${IMAGE_REGISTRY}/${IMAGE_NAME}:${IMAGE_TAG} to docker hub"
   else
     echo "INFO: No --push specified as \$1, NOT calling   docker image push ${IMAGE_REGISTRY}/${IMAGE_NAME}:${IMAGE_TAG}"
    fi
  done
done
# as :latest too?
# better not, for some purposes 'latest' does not seem like a good bad practice
