#!/bin/sh
set -eu

MINIO_ENDPOINT="${MINIO_ENDPOINT:-http://minio:9000}"
MINIO_USER="${MINIO_ROOT_USER:-minioadmin}"
MINIO_PASSWORD="${MINIO_ROOT_PASSWORD:-minioadmin}"
BUCKETS="${MINIO_BUCKETS:-tidbcloud-local-dfs tidbcloud-local-global-sort tidbcloud-local-metering}"

wait_minio() {
    for i in $(seq 1 120); do
        if command -v curl >/dev/null 2>&1; then
            curl -fsS "${MINIO_ENDPOINT}/minio/health/live" >/dev/null && return 0
        elif command -v wget >/dev/null 2>&1; then
            wget -q -O - "${MINIO_ENDPOINT}/minio/health/live" >/dev/null && return 0
        else
            sleep 5
            return 0
        fi
        if [ "$i" -eq 120 ]; then
            return 1
        fi
        sleep 1
    done
}

wait_minio

MC_BIN=""
if command -v mc >/dev/null 2>&1; then
    MC_BIN="$(command -v mc)"
elif command -v mcli >/dev/null 2>&1; then
    MC_BIN="$(command -v mcli)"
fi

if [ -n "${MC_BIN}" ]; then
    "${MC_BIN}" alias set local "${MINIO_ENDPOINT}" "${MINIO_USER}" "${MINIO_PASSWORD}"
    for bucket in ${BUCKETS}; do
        "${MC_BIN}" mb --ignore-existing "local/${bucket}"
    done
    "${MC_BIN}" ls local
    exit 0
fi

echo "mc/mcli not found in the MinIO image; creating bucket directories on the shared data volume" >&2
for bucket in ${BUCKETS}; do
    mkdir -p "/data/${bucket}"
done
ls -la /data
