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

REPO_URL="https://dl.kublr.com"
REPO_USERNAME="${REPO_USERNAME:-admin}"
REPO_PASSWORD="${REPO_PASSWORD:-admin123}"
KUBLR_VERSION="${KUBLR_VERSION:-1.29.4}"

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-helm-${KUBLR_VERSION}.tar.gz" ]]; then
    # Download artifacts from https://repo.kublr.com
    HTTP_RESPONSE=$(curl --silent --head --write-out "HTTPSTATUS:%{http_code}" -X GET ${REPO_URL}/controlplane/${KUBLR_VERSION%%-*}/kublr-helm-${KUBLR_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 ${KUBLR_VERSION}. HTTP status ${HTTP_STATUS}, nothing to do, exit."
	exit 1;
    fi

    echo "Processing kublr-helm-${KUBLR_VERSION}.tar.gz: "
    curl --progress-bar -X GET ${REPO_URL}/controlplane/${KUBLR_VERSION%%-*}/kublr-helm-${KUBLR_VERSION}.tar.gz -o kublr-helm-${KUBLR_VERSION}.tar.gz --retry 8

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

tar xzf kublr-helm-${KUBLR_VERSION}.tar.gz

curl -k --progress-bar -X PUT -f ${CURL_AUTH_OPTS} --upload-file "kublr-helm-packages/app-monitoring-1.29.4.tgz" "${REGISTRY}/app-monitoring-1.29.4.tgz" 
curl -k --progress-bar -X PUT -f ${CURL_AUTH_OPTS} --upload-file "kublr-helm-packages/controlplane-1.29.4.tgz" "${REGISTRY}/controlplane-1.29.4.tgz" 
curl -k --progress-bar -X PUT -f ${CURL_AUTH_OPTS} --upload-file "kublr-helm-packages/kublr-feature-ingress-1.29.4.tgz" "${REGISTRY}/kublr-feature-ingress-1.29.4.tgz" 
curl -k --progress-bar -X PUT -f ${CURL_AUTH_OPTS} --upload-file "kublr-helm-packages/kublr-feature-logging-1.29.4.tgz" "${REGISTRY}/kublr-feature-logging-1.29.4.tgz" 
curl -k --progress-bar -X PUT -f ${CURL_AUTH_OPTS} --upload-file "kublr-helm-packages/kublr-operator-1.29.4.tgz" "${REGISTRY}/kublr-operator-1.29.4.tgz" 
curl -k --progress-bar -X PUT -f ${CURL_AUTH_OPTS} --upload-file "kublr-helm-packages/kublr-system-1.29.4.tgz" "${REGISTRY}/kublr-system-1.29.4.tgz" 
curl -k --progress-bar -X PUT -f ${CURL_AUTH_OPTS} --upload-file "kublr-helm-packages/kublr-feature-backup-1.29.4.tgz" "${REGISTRY}/kublr-feature-backup-1.29.4.tgz" 
curl -k --progress-bar -X PUT -f ${CURL_AUTH_OPTS} --upload-file "kublr-helm-packages/cilium-1.15.1.tgz" "${REGISTRY}/cilium-1.15.1.tgz" 
curl -k --progress-bar -X PUT -f ${CURL_AUTH_OPTS} --upload-file "kublr-helm-packages/kubernetes-dashboard-7.5.0.tgz" "${REGISTRY}/kubernetes/dashboard/releases/download/kubernetes-dashboard-7.5.0/kubernetes-dashboard-7.5.0.tgz" 
curl -k --progress-bar -X PUT -f ${CURL_AUTH_OPTS} --upload-file "kublr-helm-packages/cloud-provider-azure-1.30.4.tgz" "${REGISTRY}/kubernetes-sigs/cloud-provider-azure/master/helm/repo/cloud-provider-azure-1.30.4.tgz" 
echo cleaning...
rm -fr kublr-helm-packages/
