#!/bin/bash
#
# PBA docker-tools settings checker
#
# (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-checksettings
#
# Loads and roughly checks docker image settings from pba-docker-settings.txt
# 

# params

export IMAGE_NAME=""
export IMAGE_TAG=""
export IMAGE_TAGS=""
export IMAGE_LIBRARY=""
export IMAGE_REGISTRIES=""
export BUILD_OPTIONS=""

if [ ! -e "pba-docker-settings.txt" ] ; then
  echo "FATAL: There is no pba-docker-settings.txt"
  echo ""
  echo "Please create one like this:"
  echo '  ( echo "# Settings to be sourced by pba-docker-*" ; \'
  echo '    echo "" ; \'
  echo '    echo '"'"'IMAGE_NAME=""'"'"' ; \'
  echo '    echo '"'"'IMAGE_TAGS=""'"'"' ; \'
  echo '    echo "" ; \'
  echo '    echo "# For pushing to registries. If left empty pushing is refused and aborted." ; \'
  echo '    echo '"'"'IMAGE_REGISTRIES=""'"'"' ; \'
  echo '    echo "" ) \'
  echo '    >>pba-docker-settings.txt'
  #echo ""
  echo '  echo pba-docker-settings.txt >>.dockerignore'
  echo ""
  exit 1
fi

echo "INFO: Sourcing pba-docker-settings.txt"
. ./pba-docker-settings.txt || exit 11

if [ -z "${IMAGE_NAME}" ] ; then
  echo "FATAL: pba-docker-settings.txt did not give us an IMAGE_NAME value."
  exit 2
fi

if [ -z "${IMAGE_TAGS}" ] ; then
  if [ -z "${IMAGE_TAG}" ] ; then
    echo "FATAL: pba-docker-settings.txt did not give us an IMAGE_TAGS or IMAGE_TAG value."
    exit 3
  else
    IMAGE_TAGS="${IMAGE_TAG}"
    echo "INFO: Picked up IMAGE_TAG '${IMAGE_TAG}' as IMAGE_TAGS, please consider switching to the latter."
    IMAGE_TAG=""
  fi
fi


for IMAGE_TAG in ${IMAGE_TAGS} ; do
  BADIMAGE_TAG=$(echo "${IMAGE_TAG}" |grep ":")
  if [ -n "${BADIMAGE_TAG}" ] ; then
    echo "FATAL: pba-docker-settings.txt gave us bad  IMAGE_TAG value with forbiden colon (':'): ${BADIMAGE_TAG}"
    exit 4
  fi
done


if [ ! -f Dockerfile ] ; then
  echo "FATAL: Found no Dockerfile."
  exit 5
fi


if [ -n "${IMAGE_LIBRARY}" ] ; then
  echo "ERROR: pba-docker-settings.txt still has a non-empty IMAGE_LIBRARY value which would be ignored by pba-docker-push."
  exit 6
fi

if [ -z "${IMAGE_REGISTRIES}" ] ; then
  echo "INFO: pba-docker-settings.txt did not give us an IMAGE_REGISTRIES value, this is fin except for pba-docker-push."
  echo "This is OK except for deploying to private registries."
fi


if [ ! -x "/usr/bin/docker" ] ; then
  echo "FATAL: Found no executable /usr/bin/docker"
  exit 8
fi

if [ -z "${BUILD_OPTIONS}" ] ; then
  echo "INFO: No special BUILD_OPTIONS specified."
else
  echo "INFO: Special BUILD_OPTIONS specified: '${BUILD_OPTIONS}'"
fi

echo "INFO: Calling docker --version"
docker --version || exit 9


echo "GOOD: Successfully checked pba-docker-settings.txt and docker installation."


#export DOCKER_CONTENT_TRUST=1


# DO NOT EXIT HERE:
#exit 0

