#!/usr/bin/env bash

REPO="eikek0/docspell"
if [ $# -eq 1 ]; then
  REPO=$1
fi

SBT_VERSION=$(grep sbt.version ../project/build.properties)
SBT_VERSION=${SBT_VERSION:12:99}

TMP_VERSION=$(cat ../version.sbt)
TMP_VERSION=${TMP_VERSION:25:99}
VERSION=${TMP_VERSION%\"}

if [[ $VERSION == *"SNAPSHOT" ]]; then
  VERSION=SNAPSHOT
else
  VERSION=v$VERSION
fi

# if automated build by docker, don't spool log to file
if [[ $LOG_TO_FILE -eq 1 ]]; then
  logfile=./dev-log/build_$(date +%Y%m%d_%H%M).log
  echo logging to logfile: $logfile
  echo In order to log to console set 'LOG_TO_CONSOLE' to 1
  mkdir -p ./dev-log
  exec 1>>"$logfile" 2>&1
else
  echo "logging to console..." && echo
fi

echo "########################################################"
date
echo && echo building docker images for version: $VERSION && echo
echo "(Repo: $REPO, SBT-Version: $SBT_VERSION)"
echo "########################################################" && echo && echo && echo

echo building base-binaries
time docker build -f ./base-binaries.dockerfile --build-arg SBT_VERSION=${SBT_VERSION} --tag ${REPO}:base-binaries-$VERSION ..
status=$?

if [[ $status -eq 0 ]]; then
  echo && echo && echo && echo && echo "########################################################"
  echo building base
  time docker build -f ./base.dockerfile --tag ${REPO}:base-$VERSION .
  status=$?
fi

if [[ $status -eq 0 ]]; then
  echo && echo && echo && echo && echo "########################################################"
  echo building restserver
  time docker build -f ./restserver.dockerfile --tag ${REPO}:restserver-$VERSION --build-arg REPO=$REPO --build-arg VERSION=$VERSION .
  status=$?

  if [[ $status -eq 0 ]] && [[ "$VERSION" != "SNAPSHOT" ]]; then
     docker tag ${REPO}:restserver-$VERSION ${REPO}:restserver-LATEST
  fi
fi

if [[ $status -eq 0 ]]; then
  echo && echo && echo && echo && echo "########################################################"
  echo building joex base
  time docker build -f ./joex-base.dockerfile --tag ${REPO}:joex-base-$VERSION --build-arg REPO=$REPO --build-arg VERSION=$VERSION .
  status=$?
fi
if [[ $status -eq 0 ]]; then
  echo && echo && echo && echo && echo "########################################################"
  echo building joex
  time docker build -f ./joex.dockerfile --tag ${REPO}:joex-$VERSION --build-arg REPO=$REPO --build-arg VERSION=$VERSION .
  status=$?

  if [[ $status -eq 0 ]] && [[ "$VERSION" != "SNAPSHOT" ]]; then
     docker tag ${REPO}:joex-$VERSION ${REPO}:joex-LATEST
  fi
fi

if [[ $status -eq 0 ]]; then
  echo && echo && echo && echo && echo "########################################################"
  echo building consumedir
  time docker build -f ./consumedir.dockerfile --tag ${REPO}:consumedir-$VERSION --build-arg REPO=$REPO --build-arg VERSION=$VERSION .
  status=$?

  if [[ $status -eq 0 ]] && [[ "$VERSION" != "SNAPSHOT" ]]; then
     docker tag ${REPO}:consumedir-$VERSION ${REPO}:consumedir-LATEST
  fi
fi

echo && echo && echo
echo "######################## done ########################"
date