#!/bin/bash
set -euo pipefail

SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)

# 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 "----------------------------------------"
}   

#------------------------------------------------------------------------------------------------
# build the executable
title "Building amd64 executable"
"${SCRIPT_DIR}/build.sh" amd64

#------------------------------------------------------------------------------------------------
# build the docker image
title "Building docker image"
docker buildx build --load -t gitea.jde.nz/public/simple-object-storage:test --platform linux/amd64 "${SCRIPT_DIR}"

#------------------------------------------------------------------------------------------------
# run the docker container
title "Running docker container"
export LOCALCONFIG="${SCRIPT_DIR}/.test-docker/config.json"

if [ ! -f "${LOCALCONFIG}" ]; then
    echo "PWD = $(pwd)"
    echo "SCRIPT_DIR = ${SCRIPT_DIR}"
    ls -la "${SCRIPT_DIR}"
    ls -la "${SCRIPT_DIR}/.test-docker"
    echo "Config file not found: ${LOCALCONFIG}"
    exit 1
fi

COMPOSE_FILE="${SCRIPT_DIR}/.test-docker/compose.yaml"

if [ ! -f "${COMPOSE_FILE}" ]; then
    echo "Compose file not found: ${COMPOSE_FILE}"
    exit 1
fi

#------------------------------------------------------------------------------------------------
title "Running tests"

docker compose -f "${COMPOSE_FILE}" down
docker compose -f "${COMPOSE_FILE}" rm -v

docker compose -f "${COMPOSE_FILE}" up -d 


"${SCRIPT_DIR}/test.sh" "http://localhost:7703"
RESULT=$?

docker compose -f "${COMPOSE_FILE}" down
docker compose -f "${COMPOSE_FILE}" rm -v

exit $RESULT

