#!/bin/bash

# Exit on error
set -e

# DIRECTORIES
SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
MAIN_DIR=$(cd "${SCRIPT_DIR}/.." && pwd)
EXE_DIR="${MAIN_DIR}/output"

# FUNCTIONS
function title() {
    echo "----------------------------------------"
    # Center the text
    local text="$1"
    local line_length=40
    local text_length=${#text}
    local padding=$(( (line_length - text_length) / 2 ))
    printf "%*s%s%*s\n" $padding "" "$text" $padding ""
    echo "----------------------------------------"
}   

function die() {
    echo " "
    title "$1"
    echo " "
    exit 1
}

#--------------------------------
# MAIN
#--------------------------------
PREV_DIR=$(pwd)

cd "$MAIN_DIR"

# build the executables
./build.sh all


# push the Docker image to the registry

if [ ! -f "${EXE_DIR}/simple_object_storage.amd64" ]; then
    die "amd64 executable not found"
fi

if [ ! -f "${EXE_DIR}/simple_object_storage.arm64" ]; then
    die "arm64 executable not found"
fi

# clean sos builder.
if docker buildx ls | grep -q "sos-builder"; then
    docker buildx rm sos-builder
fi
docker buildx create --name sos-builder --use

VERSION=$("${EXE_DIR}/simple_object_storage.amd64" version)

echo "Building multi-platform Docker image"
docker buildx build --no-cache --push \
        -t gitea.jde.nz/public/simple-object-storage:latest \
        -t "gitea.jde.nz/public/simple-object-storage:${VERSION}" \
        --platform linux/amd64,linux/arm64 .

echo "Build completed successfully!"

# switch back to the default builder
docker buildx use default

cd "$PREV_DIR"