#!/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}"

role_arn=$(echo ${additional_args} | jq -r '.roleARN')
image_registry=$(echo ${additional_args} | jq -r '.imageRegistry')
tidb_image_registry=$(echo ${additional_args} | jq -r ".tidbImageRegistry // \"${image_registry}\"")
full_manager_service_role=$(echo ${additional_args} | jq -r '.fullManagerServiceRole // ""')
is_byoc=$(echo ${additional_args} | jq -r '.isByoc // "false"')
azure_workload_identity_client_id=$(echo ${additional_args} | jq -r '.azureWorkloadIdentityClientID // ""')
azure_workload_identity_tenant_id=$(echo ${additional_args} | jq -r '.azureWorkloadIdentityTenantID // ""')
open_api_address="https://www.gs.us-west-2.aws.observability.tidbcloud.com"
if [ "${cloud}" = "azure" ] && [ "${is_byoc}" = "true" ]; then
  open_api_address="https://www.gs.us-west-2.aws.observability-dev.pingcap.cloud"
fi

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

if [[ "$OSTYPE" == "darwin"* ]]; then
  if ! [ -x "$(command -v gsed)" ]; then
    echo "Error: 'gsed' is not installed." >&2
    echo "If you are using Homebrew, install with 'brew install gnu-sed'." >&2
    exit 1
  fi
  SED_CMD=gsed
else
  SED_CMD=sed
fi

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

mkdir -p "${deploy_dir}"
echo "Prepare manifest files"
cp "${variant_dir}/${env}-${cloud}"/* "${deploy_dir}"

find "${deploy_dir}" -type f -exec ${SED_CMD} -i "s|TMPL_ROLE_ARN|${role_arn}|g" {} \;
find "${deploy_dir}" -type f -exec ${SED_CMD} -i "s|TMPL_REGION|${region}|g" {} \;
find "${deploy_dir}" -type f -exec ${SED_CMD} -i "s|TMPL_IMAGE_REGISTRY|${image_registry}|g" {} \;
find "${deploy_dir}" -type f -exec ${SED_CMD} -i "s|TMPL_TIDB_IMAGE_REGISTRY|${tidb_image_registry}|g" {} \;
find "${deploy_dir}" -type f -exec ${SED_CMD} -i "s|TMPL_FULL_MANAGER_SERVICE_ROLE|${full_manager_service_role}|g" {} \;
find "${deploy_dir}" -type f -exec ${SED_CMD} -i "s|TMPL_IS_BYOC|${is_byoc}|g" {} \;
find "${deploy_dir}" -type f -exec ${SED_CMD} -i "s|TMPL_OPEN_API_ADDRESS|${open_api_address}|g" {} \;
find "${deploy_dir}" -type f -exec ${SED_CMD} -i "s|TMPL_LOGIC_REGION|${logical_region_name}|g" {} \;
find "${deploy_dir}" -type f -exec ${SED_CMD} -i "s|TMPL_AZURE_WORKLOAD_IDENTITY_CLIENT_ID|${azure_workload_identity_client_id}|g" {} \;
find "${deploy_dir}" -type f -exec ${SED_CMD} -i "s|TMPL_AZURE_WORKLOAD_IDENTITY_TENANT_ID|${azure_workload_identity_tenant_id}|g" {} \;
