#!/usr/bin/env bash

set -o errexit
set -o nounset
set -o pipefail

cert_manager_version=v0.15.0
tidb_operator_version=v1.3.6
aws_pca_version=v0.1.2
vector_version=0.13.2
victoria_metrics_agent_version=0.8.9
helm_version=v3.6.0
kube_version=v1.17.0

function grab_manifests() {
  local prefix=${1:-}

  mkdir -p "$prefix"
  pushd "$prefix" >/dev/null

  mkdir -p "./charts"
  mkdir -p "./manifests"
  mkdir -p "./bin"

  # Get helm charts
  pushd charts >/dev/null
  operator_chart="tidb-operator-${tidb_operator_version}.tgz"
  if ! test -f "$operator_chart" ; then
    curl -Lsfo "./$operator_chart" "http://charts.pingcap.org/${operator_chart}"
    cp "$operator_chart" tidb-operator.tgz
  fi
  cert_manager="cert-manager-${tidb_operator_version}.tgz"
  if ! test -f "$cert_manager" ; then
    curl -Lsfo "./$cert_manager" "https://charts.jetstack.io/charts/cert-manager-${cert_manager_version}.tgz"
    cp "$cert_manager" cert-manager.tgz
  fi
  vector="vector-${vector_version}.tgz"
  if ! test -f "$vector" ; then
    curl -Lsfo "./$vector" "https://github.com/SabaPing/helm-charts/releases/download/vector-${vector_version}-hostnetwork/vector-${vector_version}.tgz"
    cp "$vector" vector.tgz
  fi
  victoria_metrics_agent="victoria_metrics_agent-${victoria_metrics_agent_version}.tgz"
  if ! test -f "$victoria_metrics_agent" ; then
    curl -Lsfo "./$victoria_metrics_agent" "https://victoriametrics.github.io/helm-charts/packages/victoria-metrics-agent-${victoria_metrics_agent_version}.tgz"
    cp "$victoria_metrics_agent" victoria_metrics_agent.tgz
  fi
  popd

  # Get kubernetes manifests
  pushd manifests >/dev/null
  crd="tidb-operator-crd-${tidb_operator_version}.yaml"
  if ! test -f "$crd" ; then
    curl -Lsfo "./$crd" "https://raw.githubusercontent.com/pingcap/tidb-operator/${tidb_operator_version}/manifests/crd.yaml"
    cp "$crd" tidb-operator-crd.yaml
  fi
  set="advanced-statefulset-crd.v1-${tidb_operator_version}.yaml"
  if ! test -f "$set" ; then
    curl -Lsfo "./$set" "https://raw.githubusercontent.com/pingcap/tidb-operator/${tidb_operator_version}/manifests/advanced-statefulset-crd.v1.yaml"
    cp "$set" advanced-statefulset-crd.v1.yaml
  fi
  cert_manager_crd="cert-manager-crd-${tidb_operator_version}.yaml"
  if ! test -f "$cert_manager_crd" ; then
    curl -Lsfo "./$cert_manager_crd" "https://github.com/jetstack/cert-manager/releases/download/${cert_manager_version}/cert-manager.crds.yaml"
    cp "$cert_manager_crd" cert-manager-crd.yaml
  fi
  clusterissuer_crd=aws-pca-clusterissuer-crd.yaml
  if ! test -f "$clusterissuer_crd" ; then
    curl -Lsfo "$clusterissuer_crd" "https://raw.githubusercontent.com/cert-manager/aws-pca-issuer/${aws_pca_version}/charts/aws-pca-issuer/crds/awspca.cert-manager.io_awspcaclusterissuers.yaml"
  fi
  issuer_crd="aws-pca-issuer-crd.yaml"
  if ! test -f $issuer_crd ; then
    curl -Lsfo "$issuer_crd" "https://raw.githubusercontent.com/cert-manager/aws-pca-issuer/${aws_pca_version}/charts/aws-pca-issuer/crds/awspca.cert-manager.io_awspcaissuers.yaml"
  fi
  popd

  # Get binaries
  os=$(uname -s | tr '[:upper:]' '[:lower:]')
  arch=$(uname -m)
  # Currently no binary to get
}

grab_manifests "$@"
