#!/bin/bash

usage() {
    me=`basename "$0"`
    echo >&2 "Usage: $me [--tag TAG] [--gerrit-url URL] [IMAGE]"
    exit 1
}

while test $# -gt 0 ; do
  case "$1" in
  --tag)
    shift
    TAG=$1
    shift
    ;;

  --gerrit-url)
    shift
    GERRIT_WAR_URL=$1
    shift
    ;;

  *)
    break
  esac
done

GIT_REV=$(git describe --dirty)

test -z "$TAG" && TAG=latest

docker_build(){
    IMAGE=$1

    docker build -t k8sgerrit/$IMAGE:$TAG -t k8sgerrit/$IMAGE:$GIT_REV ./container-images/$IMAGE
    if test $? -ne 0; then
        REPORT="$REPORT Failed: k8sgerrit/$IMAGE.\n"
        RETURN_CODE=1
    else
        REPORT="$REPORT Success: k8sgerrit/$IMAGE:$TAG\n Success: k8sgerrit/$IMAGE:$GIT_REV\n"
    fi
}

docker_build_gerrit_base(){
    if test -n "$GERRIT_WAR_URL"; then
        BUILD_ARGS="--build-arg GERRIT_WAR_URL=$GERRIT_WAR_URL"
    fi
    docker build $BUILD_ARGS -t gerrit-base ./container-images/gerrit-base
    if test $? -ne 0; then
        echo -e "\n\nFailed to build gerrit-base image."
        exit 1
    fi
}

REPORT="Build results: \n"
RETURN_CODE=0

docker build -t base ./container-images/base
if test $? -ne 0; then
    echo -e "\n\nFailed to build base image."
    exit 1
fi

if test $# -eq 0 ; then
    docker_build_gerrit_base
    for IMAGE in apache-git-http-backend gerrit-master gerrit-slave git-gc gerrit-init; do
        docker_build $IMAGE
    done
else
    while test $# -gt 0 ; do
        if [[ $1 = gerrit-* ]]; then
            docker_build_gerrit_base
        fi
        docker_build $1
        shift
    done
fi

echo -e "\n\n$REPORT"
exit $RETURN_CODE
