#!/bin/bash

cd "$(dirname "$0")" || exit 1

#=============================================================================
#=================================== UTILS ===================================
#=============================================================================

LOG_INFO() {
    echo "[INFO] $1"
}

#=============================================================================
#=============================================================================
#=============================================================================

print_help() {
    echo "Usage:"
    echo ""
    echo "local.sh [-h|--help] [--remove_image] [argumets_for_checker]"
    echo ""
    echo "      --remove_image - remove the checker's docker image after the run"
    echo "      -h|--help - prints this message"
    echo "      argumets_for_checker - list of space separated arguments to be passed to the checker"
    echo ""
}

main() {
    local script_args=()
    local remove_image=''

    while [[ $# -gt 0 ]]; do
        case $1 in
            -h|--help)
                print_help
                exit 0
            ;;
            --remove_image)
                remove_image='true'
            ;;
            *)
                script_args+=("$1")
            ;;
        esac
        shift
    done

    image_name="$(basename "$(pwd)")"

    LOG_INFO "Building image..."
    docker build -q -t "$image_name" .


    tmpdir="$(mktemp -d)"
    cp -R ./* "$tmpdir"

    LOG_INFO "Running checker..."
    docker run --rm \
            --name "$image_name-container" \
            --mount type=bind,source="$tmpdir",target=/build \
            "$image_name" /bin/bash /build/checker/checker.sh "${script_args[@]}"

    if [ -n "$remove_image" ] ; then
        LOG_INFO "Cleaning up..."
        docker rmi -f "$image_name":latest
    fi

}

main "$@"