#!/usr/bin/env bash

set -eE
set -o pipefail
set -x

DOCKERFILE="Dockerfile.travis"
if [ "${TRAVIS_BRANCH}" == "master" ]
then
  VERSION="latest"
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="adguard/adguardhome:${VERSION}"
    else
        image="adguard/adguardhome:${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}
    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