#!/usr/bin/env bash
# if the repo is password protected use:
# REPO_USERNAME=user REPO_PASSWORD=password bash kublr-load-agent.sh REPO_URL
set -e

KUBLR_REPO_URL="https://dl.kublr.com"
REPO_USERNAME="${HELM_USERNAME:-admin}"
REPO_PASSWORD="${HELM_PASSWORD:-admin123}"
AGENT_VERSION="${AGENT_VERSION:-1.31.6-0-RC.2}"

if [ -z "$1" ]; then
    echo "Usage: $0 [REGISTRY]"
    echo "Repo credentials can be specified via env vars REPO_USERNAME and REPO_PASSWORD"
    exit 1
fi

REGISTRY="$1"

CURL_AUTH_OPTS=""
if [ "${REPO_USERNAME}" != "" ]; then
    CURL_AUTH_OPTS="${REPO_USERNAME:+"--user "${REPO_USERNAME:-}:${REPO_PASSWORD:-}""}"
fi

if [ ! -f "kublr-agent-${AGENT_VERSION}.tar.gz" ]; then
    # Download artifacts from https://repo.kublr.com
    HTTP_RESPONSE=$(curl --silent --head --write-out "HTTPSTATUS:%{http_code}" -X GET --retry 8 "${KUBLR_REPO_URL}/agent/${AGENT_VERSION%%-*}/kublr-agent-${AGENT_VERSION}.tar.gz")
    HTTP_STATUS=$(echo "${HTTP_RESPONSE}" | tr -d '\n' | sed -e 's/.*HTTPSTATUS://')
    if [ ! "${HTTP_STATUS}" -eq "200"  ]; then
        echo "Error getting file with version ${AGENT_VERSION}. HTTP status ${HTTP_STATUS}, nothing to do, exit."
        exit 1
    fi

    echo "Download kublr-agent-${AGENT_VERSION}.tar.gz:"
    curl --progress-bar -X GET "${KUBLR_REPO_URL}/agent/${AGENT_VERSION%%-*}/kublr-agent-${AGENT_VERSION}.tar.gz" -o "kublr-agent-${AGENT_VERSION}.tar.gz" --retry 8

    if [ ! -f "kublr-agent-${AGENT_VERSION}.tar.gz" ]; then
        echo "No file download found!"
        exit 1
    fi
fi

MD5SUM="$(md5sum "kublr-agent-${AGENT_VERSION}.tar.gz" | cut -d' ' -f1)"
if [ "${MD5SUM}" != "cf551b48a8bf73a42a1487325c703551" ]; then
    echo "Wrong md5 checksum!"
    echo "md5 checksum must be ${MD5SUM}"
    #exit 1;
fi

tar xzvf "kublr-agent-${AGENT_VERSION}.tar.gz"

cat "kublr-agent-${AGENT_VERSION}/kublr-artifact.list" | while read -r ART_PATH; do
    ART_PATH="${ART_PATH##/}"
    ART_NAME="$(basename "${ART_PATH}")"

    LOCAL_PATH="kublr-agent-${AGENT_VERSION}/${ART_NAME}"
    if [ ! -f "${LOCAL_PATH}" ] ; then
        LOCAL_PATH="kublr-agent-${AGENT_VERSION}/charts/${ART_PATH}"
        if [ ! -f "${LOCAL_PATH}" ] ; then
            echo "Artifact ${ART_PATH} not found in kublr-agent-${AGENT_VERSION}/"
            exit 1
        fi
    fi

    echo "Upload ${LOCAL_PATH} to local repo: ${REGISTRY}/${ART_PATH}"
    curl -k --progress-bar -X PUT -f ${CURL_AUTH_OPTS} --upload-file "${LOCAL_PATH}" "${REGISTRY}/${ART_PATH}"
done
