#!/usr/bin/env bash

ROOT="$( git rev-parse --show-toplevel )"
DEST="${ROOT}/tools/bin"

fetch() {
  local tool=$1; shift
  local ver=$1; shift

  local arch="$(uname -m)"
  case "$arch" in
    x86_64) arch="amd64" ;;
    aarch64) arch="arm64" ;;
    *);;
  esac
  local os="$(uname -s | awk '{ print tolower($0) }')"

  local ver_cmd=""
  local fetch_cmd=""
  case "$tool" in
    "kubectl")
      ver_cmd="${DEST}/kubectl version 2>/dev/null | grep Client | cut -d' ' -f5 | sed 's/\w\+:\"v\(.*\)\",/\1/'"
      fetch_cmd="(curl -sSfLo '${DEST}/kubectl' 'https://dl.k8s.io/release/v${ver}/bin/${os}/${arch}/kubectl' && chmod +x ${DEST}/kubectl)"
      ;;
    *)
      echo "unknown tool $tool"
      return 1
      ;;
  esac

  if [[ "${ver}" != "$(eval ${ver_cmd})" ]]; then
    echo "${tool} missing or not version '${ver}', downloading..."
    mkdir -p ${DEST}
    eval ${fetch_cmd}
  fi
}

fetch $@
