#!/bin/bash

usage() {
    me=`basename "$0"`
    echo >&2 "Usage: $me [--help] [--update-latest] [--registry REGISTRY] [--org ORGANIZATION] [--no-push] [--tag TAG] [IMAGE]"
    exit 1
}

UPDATE_LATEST=false
ORGANIZATION=k8sgerrit
PUSH_IMAGES=true

while test $# -gt 0 ; do
  case "$1" in
  --help)
    usage
    ;;
  --update-latest)
    UPDATE_LATEST=true
    shift
    ;;
  --registry)
    shift
    REGISTRY=$1
    shift
    ;;
  --org)
    shift
    ORGANIZATION=$1
    shift
    ;;
  --no-push)
    PUSH_IMAGES=false
    shift
    ;;
  --tag)
    shift
    TAG=$1
    shift
    ;;
  *)
    break
  esac
done

if test -z "$TAG"; then
  TAG=$(./get_version.sh)
fi

#Get list of images
source container-images/publish_list
IMAGES=$(get_image_list)

test -n "$REGISTRY" && [[ "$REGISTRY" != */ ]] && REGISTRY="$REGISTRY/"

publish_image(){
  IMAGE=$1
  if test "$UPDATE_LATEST" = "true" ; then
    docker image tag k8sgerrit/$IMAGE:$TAG ${REGISTRY}${ORGANIZATION}/$IMAGE:latest
    if test "$PUSH_IMAGES" = "true" ; then
      docker push "${REGISTRY}${ORGANIZATION}/$IMAGE:latest"
    fi
  fi

  docker image tag k8sgerrit/$IMAGE:$TAG ${REGISTRY}${ORGANIZATION}/$IMAGE:$TAG
  if test "$PUSH_IMAGES" = "true" ; then
    docker push "${REGISTRY}${ORGANIZATION}/$IMAGE:$TAG"
  fi
}

if test $# -eq 0 ; then
  for IMAGE in $IMAGES; do
    publish_image $IMAGE
  done
else
  while test $# -gt 0 ; do
    publish_image $1
    shift
  done
fi
