#!/usr/bin/env bash

set -euo pipefail

# When changing this script, remember to modify the corresponding github action
region=${1}
env=${2}
cloud=${3}
logical_region_name=${4}
json_file_path=${5}

additional_args=$(jq -r '.' "${json_file_path}")
echo "additional_args: ${additional_args}"

image_registry=$(echo "${additional_args}" | jq -r '.imageRegistry')
loki_server_dns=$(echo "${additional_args}" | jq -r '.lokiServerDns // empty')

ROOT=$(cd $(dirname ${BASH_SOURCE[0]}) && pwd)
deploy_dir="${ROOT}/envs/${cloud}-${env}-${logical_region_name}"
variant_dir="${ROOT}/variants/${cloud}"

if [ -e ${deploy_dir} ]; then
  echo "New region deploy directory already exist"
  exit 1
fi

if [[ "${cloud}" == "gcp" ]]; then
  if [[ -z "${loki_server_dns}" || "${loki_server_dns}" == "null" ]]; then
    case "${env}" in
      prod)
        loki_server_dns="a5bb1e2a8625f4a28b44ff9ee740ec3a-1136545906.us-west-2.elb.amazonaws.com"
        ;;
      staging)
        loki_server_dns="a8412cffa65054b32820b520f6906224-258512369.us-west-2.elb.amazonaws.com"
        ;;
      *)
        echo "lokiServerDns is required for env=${env} (no default, to avoid routing non-prod traffic to prod Loki)"
        exit 1
        ;;
    esac
  fi
fi

mkdir -p "${deploy_dir}"
echo "Prepare manifest files"
cp "${variant_dir}/auth0-secret.yaml" "${deploy_dir}/auth0-secret.yaml"
cp "${variant_dir}/config.yaml" "${deploy_dir}/config.yaml"
cp "${variant_dir}/deployment.yaml" "${deploy_dir}/deployment.yaml"
if [[ -f "${variant_dir}/kustomization_tmpl.yaml" ]]; then
  cp "${variant_dir}/kustomization_tmpl.yaml" "${deploy_dir}/kustomization.yaml"
else
  cp "${variant_dir}/kustomization.yaml" "${deploy_dir}/kustomization.yaml"
fi

if [[ "$OSTYPE" == "darwin"* ]]; then
    SED_IN_PLACE=(-i '')
else
    SED_IN_PLACE=(-i)
fi

find "${deploy_dir}" -type f -exec sed "${SED_IN_PLACE[@]}" "s|TMPL_ENV|${env}|g" {} \;
find "${deploy_dir}" -type f -exec sed "${SED_IN_PLACE[@]}" "s|TMPL_REGION|${region}|g" {} \;
find "${deploy_dir}" -type f -exec sed "${SED_IN_PLACE[@]}" "s|TMPL_IMAGE_REGISTRY|${image_registry}|g" {} \;
find "${deploy_dir}" -type f -exec sed "${SED_IN_PLACE[@]}" "s|TMPL_LOKI_SERVER_DNS|${loki_server_dns}|g" {} \;

if [[ "${env}" != "prod" ]]; then
  sed "${SED_IN_PLACE[@]}" '/shoot-config-tmpls/d' "${deploy_dir}/kustomization.yaml"
fi

if [[ "${cloud}" == "gcp" ]] && command -v yq >/dev/null 2>&1; then
  yq e -i ".o11yConfig.effectiveRegion += [\"${cloud}-${logical_region_name}-*\"]" "${deploy_dir}/config.yaml"
fi
