#!/bin/bash
set -ex

# prometheus metrics mixin branch
# https://github.com/prometheus-operator/kube-prometheus#compatibility
KUBE_PROMETHEUS_RELEASE=main

update_jsonnet() {
  which jsonnet > /dev/null || { echo "Required jsonnet not found!"; exit 1;}
  which jb > /dev/null || { echo "Required jb ( json-bundler ) not found!"; exit 1;}

  # remove previous versions
  rm -f jsonnetfile.json jsonnetfile.lock.json

  jb init
  jb install github.com/prometheus-operator/kube-prometheus/jsonnet/kube-prometheus@main
}

update_helm() {
  #helm repo update
  helm dep update
}

# AWS public ECR
login_ecr_public() {
  aws ecr-public get-login-password \
    --region us-east-1 | helm registry login \
    --username AWS \
    --password-stdin public.ecr.aws
}

get_extract_chart() {
  local CHART=$1
  local VERSION=$(yq eval '.dependencies[] | select(.name=="'$CHART'") | .version' Chart.yaml)

  rm -rf charts/$CHART

  # If helm already pulled the chart archive use it
  if [ -f charts/$CHART-$VERSION.tgz ]; then
    tar xfvz charts/$CHART-$VERSION.tgz -C charts && rm charts/$CHART-$VERSION.tgz

  # otherwise parse Chart.yaml and get it
  else
    local REPO=$(yq eval '.dependencies[] | select(.name=="'$CHART'") | .repository' Chart.yaml)
    local URL=$(curl -s $REPO/index.yaml | yq '.entries."'$CHART'".[] | select (.version=="'$VERSION'") | .urls[0]')

    wget -qO - $URL | tar xfvz - -C charts
  fi
}

patch_chart() {
  local CHART=$1

  get_extract_chart $CHART

  [ -r $CHART.patch ] && patch -p0 -i $CHART.patch --no-backup-if-mismatch || true
}

patch_rebase() {
  local CHART=$1

  get_extract_chart $CHART

  cp -r charts/$CHART charts/$CHART.orig

  patch -p0 -i $CHART.patch --no-backup-if-mismatch
}

patch_create() {
  local CHART=$1

  diff -rtuN charts/$CHART.orig charts/$CHART > $CHART.patch
  rm -rf charts/$CHART.orig
}

update_docs() {
  helm-docs
}