#!/usr/bin/env bash

BUILD_DATE=$(date)
VERSION=$1
MIGRATIONS=$2

function require() {
    if [ "$1" = "" ]; then
        echo "input '$2' required"
        print_help
        exit 1
    fi
}

function print_help() {
    echo "build.sh"
    echo ""
    echo "Usage:"
    echo "      build.sh [version] [migrations]"
    echo ""
    echo "Args:"
    echo "      version: The version of the current container"
    echo "      migrations: (optional) Whether to build the migrations container as well"
}

require "$VERSION" "version"

if ! docker run --rm -it arm64v8/ubuntu:19.10 /bin/bash -c 'echo "docker is configured correctly"'; then
    echo "docker is not configured to run on qemu-emulated architectures, fixing will require sudo"
    sudo docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
fi

if ! which cross; then
    cargo intall cross
fi

set -xe

cross build \
    --target aarch64-unknown-linux-musl \
    --release

mkdir -p artifacts
rm -rf artifacts/relay
cp ./target/aarch64-unknown-linux-musl/release/relay artifacts/relay

docker build \
    --pull \
    --no-cache \
    --build-arg BUILD_DATE="${BUILD_DATE}" \
    --build-arg TAG="${TAG}" \
    -f Dockerfile.arm64v8 \
    -t "asonix/relay:${VERSION}-arm64v8" \
    -t "asonix/relay:latest-arm64v8" \
    -t "asonix/relay:latest" \
    ./artifacts

docker push "asonix/relay:${VERSION}-arm64v8"
docker push "asonix/relay:latest-arm64v8"
docker push "asonix/relay:latest"

if [ "${MIGRATIONS}" = "migrations" ]; then
    rm -rf artifacts/migrations
    cp -r ./migrations artifacts/migrations

    docker build \
        --pull \
        --no-cache \
        --build-arg BUILD_DATE="${BUILD_DATE}" \
        --build-arg TAG="${TAG}" \
        -f Dockerfile.migrations.arm64v8 \
        -t "asonix/relay-migrations:${VERSION}-arm64v8" \
        -t "asonix/relay-migrations:latest-arm64v8" \
        -t "asonix/relay-migrations:latest" \
        ./artifacts

    docker push "asonix/relay-migrations:${VERSION}-arm64v8"
    docker push "asonix/relay-migrations:latest-arm64v8"
    docker push "asonix/relay-migrations:latest"
fi