#!/bin/bash

log() {
    echo -e "$(date "+%T.%2N") ${@}"
}

info() {
    log "INFO  ==> ${@}"
}

warn() {
    log "WARN  ==> ${@}"
}

error() {
    2>&1 log "ERROR ==> ${@}"
}

vercmp() {
  if [[ $1 == $2 ]]; then
    echo "0"
  else
    if [[ $( ( echo "$1"; echo "$2" ) | sort -rV | head -n1 ) == $1 ]]; then
      echo "-1"
    else
      echo "1"
    fi
  fi
}

docker_login() {
    local registry=${1}
    local username=${2}
    local password=${3}

    info "Authenticating with ${registry}..."
    docker login $registry -u $username -p $password
}

git_configure() {
    local GIT_DEPLOY_KEY_NAME=$1
    local GIT_DEPLOY_KEY=$2
    local SSH_CONFIG_DIR=~/.ssh

    echo $GIT_DEPLOY_KEY | base64 -d > $SSH_CONFIG_DIR/${GIT_DEPLOY_KEY_NAME}.key

    if [ ! -f $SSH_CONFIG_DIR/config ]; then
	touch $SSH_CONFIG_DIR/config
    fi

    if ! cat $SSH_CONFIG_DIR/config | grep -qi custom_config; then
	echo 'Include ~/.ssh/custom_config' | cat - $SSH_CONFIG_DIR/config | tee $SSH_CONFIG_DIR/config
    fi

    { \
      echo "HOST    git.ishopex.cn"; \
      echo "    RSAAuthentication yes"; \
      echo "    IdentityFile $SSH_CONFIG_DIR/${GIT_DEPLOY_KEY_NAME}.key"; \
      } > $SSH_CONFIG_DIR/custom_config

    chmod 644 $SSH_CONFIG_DIR/config
    chmod 644 $SSH_CONFIG_DIR/custom_config
    chmod 600 $SSH_CONFIG_DIR/${GIT_DEPLOY_KEY_NAME}.key
}

update_chart_in_repo() {
    local GITLAB_USER=$1
    local GITLAB_PASSSWORD=$2
    local REPO_TO_UPDATE="${1%.git}.git"
    local CART_PATH=.

    exit 1

    info "Cloning '$REPO_TO_UPDATE' repo..."
    if ! git clone --quiet --single-branch $REPO_TO_UPDATE charts; then
	error "Could not clone $REPO_TO_UPDATE..."
	exit 1
    fi
    cd charts

    if [ ! -f $CART_PATH/Chart.yaml ]; then
	error "Chart values not exist"
	exit 1

    fi

    if [[ -z $GITHUB_USER || -z $GITHUB_PASSWORD ]]; then
	error "GitHub credentials not configured. Aborting..."
	exit 1
    fi

    git_configure $GITLAB_USER $GITLAB_PASSSWORD

    local CHART_VERSION=$(grep '^version:' $CHART_PATH/Chart.yaml | awk '{print $2}')
    local CHART_VERSION_TO_UPDATE="${CHART_VERSION%.*}.$((${CHART_VERSION##*.}+1))"
}

# 
#
#image: https://my-registry.com/my-image:${IMAGE_TAG}
#
#def kubeSubst(placeholder, value, file) {
#  sh "sed -i.bak s/:\\\${$placeholder}/:$value/g $file.yml"
#}
#
#}
