#!/bin/bash

CAMEL_K_OPERATOR_DEFAULT_VERSION="0.3.4"

# Deploy Camel-K operator
deploy_camel_k_operator() {
  local version=${1:-$CAMEL_K_OPERATOR_DEFAULT_VERSION}
  local project=${2:-}
  local opts=${3:-}
  local extra_opts=""
  if [ -n "$project" ]; then
    extra_opts="--namespace $project"
  fi
  if [ -n "$opts" ]; then
    extra_opts="$extra_opts $opts"
  fi
  local kamel=$(get_camel_k_bin "$version")
  $kamel install --skip-cluster-setup $extra_opts
}

# Install Camel-K CRD
install_camel_k_crds() {
  local version=${1:-$CAMEL_K_OPERATOR_DEFAULT_VERSION}
  local kamel=$(get_camel_k_bin "$version")
  $kamel install --cluster-setup
}

# Download `kamel` cli
get_camel_k_bin() {
  local version=${1:-$CAMEL_K_OPERATOR_DEFAULT_VERSION}

  # If its already downloaded, skip download
  local config_dir=$(syndesis_config_dir)
  [ -d $config_dir/bin ] || mkdir $config_dir/bin
  local kamel_command="$config_dir/bin/kamel-${version}"
  if [ -e $kamel_command ]; then
    echo $kamel_command
    return
  fi

  # Check for proper operating system
  local os="linux"
  if $(isMacOs); then
    os="mac"
  elif $(isWindows); then
    os="windows"
  fi
  local download_url="https://github.com/apache/camel-k/releases/download/$version/camel-k-client-$version-$os-64bit.tar.gz"
  local archive=$(mktemp $config_dir/camel-k-${version}.tar-XXXX)
  # Download from Camel-K site
  curl -sL -o $archive $download_url
  local tmp_dir=$(mktemp -d $config_dir/camel-k-${version}-XXXX)
  pushd $tmp_dir >/dev/null
  tar xf $archive
  rm $archive
  mv ./kamel $kamel_command
  popd >/dev/null
  [ -n "$tmp_dir" ] && [ -d "$tmp_dir" ] && rm -rf $tmp_dir
  echo $kamel_command
}
