#!/usr/bin/env bash

# Dasharo Configuration Utility Container

SCRIPT_DIR=$(dirname "$(readlink -f ${BASH_SOURCE[0]})")

DOCKER_IMAGE="ghcr.io/dasharo/dasharo-sdk:v1.5.0"

# Initialize an array to store Docker arguments
DOCKER_ARGS=()

# Initialize an array to store the command to be executed in the container
COMMAND_ARGS=()

declare -A MOUNTED_DIRS=(["$SCRIPT_DIR"]=1)

# Function to add a bind mount for a file
add_bind_mount() {
    local ABS_PATH="$1"
    local DIR_PATH=""
    DIR_PATH="$(dirname "$ABS_PATH")"

    if [[ -z "${MOUNTED_DIRS[$DIR_PATH]:-}" ]]; then
        DOCKER_ARGS+=("-v" "$DIR_PATH:$DIR_PATH")
        MOUNTED_DIRS[$DIR_PATH]=1
    fi
}

# Iterate over the command line arguments
for ARG in "$@"; do
    if [[ -f "$ARG" ]]; then
        # Convert the file path to an absolute path and add a bind mount
        ABS_PATH=$(realpath "$ARG")
        add_bind_mount "$ABS_PATH"
        COMMAND_ARGS+=("$ABS_PATH")
    else
        COMMAND_ARGS+=("$ARG")
    fi
done

if [[ -v CI ]]; then
    "${SCRIPT_DIR}/dcu" "${COMMAND_ARGS[@]}"
else
    docker run -t --rm -v "${SCRIPT_DIR}:${SCRIPT_DIR}" "${DOCKER_ARGS[@]}" -w "${SCRIPT_DIR}" $DOCKER_IMAGE ./dcu "${COMMAND_ARGS[@]}"
fi
