#!/usr/bin/env bash

set -eE
set -o pipefail
set -x

DOCKERFILE="Dockerfile.travis"
IMAGE_NAME="adguard/adguardhome"

if [[ "${TRAVIS_BRANCH}" == "master" ]]
then
  VERSION="edge"
else
  VERSION=`git describe --abbrev=4 --dirty --always --tags`
fi

build_image() {
    from="$(awk '$1 == toupper("FROM") { print $2 }' ${DOCKERFILE})"

    # See https://hub.docker.com/r/multiarch/alpine/tags
    case "${GOARCH}" in
        arm64)
           alpineArch='arm64-edge'
           imageArch='arm64'
           ;;
        arm)
           alpineArch='armhf-edge'
           imageArch='armhf'
           ;;
        386)
           alpineArch='i386-edge'
           imageArch='i386'
           ;;
        amd64)
           alpineArch='amd64-edge'
           ;;
        *)
           alpineArch='amd64-edge'
           ;;
    esac

    if [[ "${GOOS}" == "linux" ]] && [[ "${GOARCH}" == "amd64" ]]
    then
        image="${IMAGE_NAME}:${VERSION}"
    else
        image="${IMAGE_NAME}:${imageArch}-${VERSION}"
    fi

    make cleanfast; CGO_DISABLED=1 make

    docker pull "multiarch/alpine:${alpineArch}"
    docker tag "multiarch/alpine:${alpineArch}" "$from"
    docker build -t "${image}" -f ${DOCKERFILE} .
    docker push ${image}
    if [[ "${VERSION}" != "edge" ]]
    then
        latest=${image/$VERSION/latest}
        docker tag "${image}" "${latest}"
        docker push ${latest}
        docker rmi ${latest}
    fi
    docker rmi "$from"
}

# prepare qemu
docker run --rm --privileged multiarch/qemu-user-static:register --reset

make clean

# Prepare releases
GOOS=linux GOARCH=amd64 build_image
GOOS=linux GOARCH=386 build_image
GOOS=linux GOARCH=arm GOARM=6 build_image
GOOS=linux GOARCH=arm64 GOARM=6 build_image