#!/usr/bin/env bash

if [ -z "$1" ]; then
    echo "Please specify a version"
    exit 1
fi

version="$1"
if [[ $version == v* ]]; then
    version="${version:1}"
fi

push=""
if [ -z "$2" ] || [ "$2" == "--push" ]; then
    push="$2"
    if [ ! -z "$push" ]; then
        echo "Running with $push !"
    fi
elif [ "$2" == "--load" ]; then
    push="$2"
else
    echo "Don't understand second argument: $2"
    exit 1
fi

if ! docker buildx version > /dev/null; then
    echo "The docker buildx command is required."
    echo "See: https://github.com/docker/buildx#binary-release"
    exit 1
fi

set -e
cd "$(dirname "$0")"

trap "{ docker buildx rm docspell-builder; }" EXIT

platforms=${PLATFORMS:-"linux/amd64,linux/arm64,linux/arm/v7"}
docker buildx create --name docspell-builder --use

case $version in
    *SNAPSHOT)
        echo ">>>> Building nightly images for $version <<<<<"
        url_base="https://github.com/eikek/docspell/releases/download/nightly"

        echo "============ Building Restserver ============"
        docker buildx build \
               --platform="$platforms" $push \
               --build-arg restserver_url="$url_base/docspell-restserver-$version.zip" \
               --tag docspell/restserver:nightly \
               -f restserver.dockerfile .

        echo "============ Building Joex ============"
        docker buildx build \
               --platform="$platforms" $push \
               --build-arg joex_url="$url_base/docspell-joex-$version.zip" \
               --tag docspell/joex:nightly \
               -f joex.dockerfile .
        ;;
    *)
        echo ">>>> Building release images for $version <<<<<"
        echo "============ Building Restserver ============"
        docker buildx build \
               --platform="$platforms" $push \
               --build-arg version=$version \
               --tag docspell/restserver:v$version \
               --tag docspell/restserver:latest \
               -f restserver.dockerfile .

        echo "============ Building Joex ============"
        docker buildx build \
               --platform="$platforms" $push \
               --build-arg version=$version \
               --tag docspell/joex:v$version \
               --tag docspell/joex:latest \
               -f joex.dockerfile .
esac