#!/usr/bin/env bash
# if our repo is password protected use:
# REPO_USERNAME=user REPO_PASSWORD=sword 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.23.17-5}"

if [ -z "$1" ]; then
    echo Usage: $0 [REGISTRY]
    echo "Repo credentials store into env REPO_USERNAME and REPO_PASSWORD"
    exit 1
fi

REGISTRY=$1
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)
if [[ "${MD5SUM}" != "d0b93a96842aae1c73f16760e2183706  kublr-agent-${AGENT_VERSION}.tar.gz" ]]; then
    echo "Wrong md5 checksum!"
    echo "md5 checksum must be ${MD5SUM}"
    #exit 1;
fi

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

for ART_PATH in $(cat kublr-agent-${AGENT_VERSION}/kublr-artifact.list); do
    ART=$(echo ${ART_PATH} | awk -F '/' '{print $NF}' )
    echo "Upload kublr-agent-${AGENT_VERSION}/${ART} to local repo:"
    curl -k --progress-bar -X PUT -f ${CURL_AUTH_OPTS} --upload-file kublr-agent-${AGENT_VERSION}/${ART} ${REGISTRY}${ART_PATH}
done
