#!/bin/bash

set -euo pipefail

if [[ $# -eq 1 && "$1" == "-h" ]]; then
  echo "Usage: `basename $0`"
  exit 0
fi

# This script should be located in same directory as configure-netagent
BIN_DIR=${BASH_SOURCE[0]%/*}

API_KEY_SECRET=${API_KEY_SECRET?API_KEY_SECRET Required}
COMMAND_CENTER_URL=${COMMAND_CENTER_URL:-https://net.banyanops.com}
ACCESS_TIER_NAME=${ACCESS_TIER_NAME?ACCESS_TIER_NAME Required}
ACCESS_TIER_PUBLIC_ADDRESS=${ACCESS_TIER_PUBLIC_ADDRESS:-}
HTTPS_PROXY=${HTTPS_PROXY:-}

DEPS="jq tar gzip curl sed"

APTYUM_CMD=$(command -v apt || command -v yum)
[[ -z ${APTYUM_CMD} ]] && (echo "Unable to find the apt or yum utility!" && exit 1)

SEARCH_CMD=$(command -v dpkg || command -v rpm)
[[ -z ${SEARCH_CMD} ]] && (echo "Unable to find the dpkg or rpm utility!" && exit 1)

if [[ $(basename ${SEARCH_CMD}) == "dpkg" ]]; then
  SEARCH_CMD="${SEARCH_CMD} -s"
else
  SEARCH_CMD="${SEARCH_CMD} -q --quiet"
fi

if [[ $(basename ${APTYUM_CMD}) == "apt" ]]; then
  ${APTYUM_CMD} update
else
  ${APTYUM_CMD} clean all
fi

MISSING_DEPS=()
for x in ${DEPS}; do
   ${SEARCH_CMD} ${x} &> /dev/null || [[ -x $(command -v ${x}) ]] || MISSING_DEPS+=(${x})
done
[[ -z "${MISSING_DEPS[@]:-}" ]] || ${APTYUM_CMD} install -y ${MISSING_DEPS[@]}

${BIN_DIR}/configure-netagent \
  --api-key-secret=${API_KEY_SECRET?Required} \
  --command-center-url=${COMMAND_CENTER_URL?Required} \
  --access-tier-name=${ACCESS_TIER_NAME?Required} \
  --access-tier-public-address=${ACCESS_TIER_PUBLIC_ADDRESS} \
  --https-proxy=${HTTPS_PROXY} \
  config.yaml > config.tmp
mv config.tmp config.yaml

echo "${0}: Done."
