#!/usr/bin/env bash
set -euo pipefail
# When changing this script, remember to modify the corresponding github action
region=${1}
zones=${2}
env=${3}
logicalRegionName=${4}
additional_args=${5}

# Ensure jq is installed
if ! command -v jq &> /dev/null; then
    echo "jq could not be found. Please install jq to continue."
    exit 1
fi

irsa_role_arn=$(echo "${additional_args}" | jq -r '.irsaRoleArn')
data_plane_role_name=$(echo "${additional_args}" | jq -r '.dataplaneRoleName')
image_registry=$(echo "${additional_args}" | jq -r '.imageRegistry')
infra_api_server_key=$(echo "${additional_args}" | jq -r '.infraAPIServerKey')
api_gateway_key=$(echo "${additional_args}" | jq -r '.apiGatewayKey')

# External Secretes
cluster_proxy_auth0_secret_key=$(echo "${additional_args}" | jq -r '.clusterProxyAuth0SecretKey // "dev-proxy-auth0-client"')
o11y_auth0_secret_key=$(echo "${additional_args}" | jq -r '.o11yAuth0Secret // "dev-o11y-auth0-client"')

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

echo ${deploy_dir}

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

mkdir "${deploy_dir}"
echo "Prepare manifest files"
cp "${variant_dir}/kustomization_tmpl.yaml" "${deploy_dir}/kustomization.yaml"
cp "${variant_dir}/args-patch_tmpl.yaml" "${deploy_dir}/args-patch.yaml"
cp "${variant_dir}/serviceaccount_tmpl.yaml" "${deploy_dir}/serviceaccount.yaml"
cp "${variant_dir}/config-br_tmpl.yaml" "${deploy_dir}/config-br.yaml"
cp "${variant_dir}/config-cdc_tmpl.yaml" "${deploy_dir}/config-cdc.yaml"
cp "${variant_dir}/infra-kubeconfig-secret_tmpl.yaml" "${deploy_dir}/infra-kubeconfig-secret.yaml"
cp "${variant_dir}/api-gateway-token-secret_tmpl.yaml" "${deploy_dir}/api-gateway-token-secret.yaml"
cp "${variant_dir}/auth0-secret_tmpl.yaml" "${deploy_dir}/auth0-secret.yaml"

cp "${env_template_dir}/resources_tmpl.yaml" "${deploy_dir}/resources.yaml"
cp "${env_template_dir}/dp-deployment_tmpl.yaml" "${deploy_dir}/dp-deployment.yaml"

sed -i "s|REGION|${region}|g" "${deploy_dir}/args-patch.yaml"
sed -i "s|ZONES|${zones}|g" "${deploy_dir}/args-patch.yaml"
sed -i "s|IRSA_ROLE_ARN|${irsa_role_arn}|g" "${deploy_dir}/serviceaccount.yaml"
sed -i "s|IMAGE_REGISTRY|${image_registry}|g" "${deploy_dir}/args-patch.yaml"
sed -i "s|IMAGE_REGISTRY|${image_registry}|g" "${deploy_dir}/dp-deployment.yaml"
sed -i "s|IMAGE_REGISTRY|${image_registry}|g" "${deploy_dir}/config-cdc.yaml"
sed -i "s|DATA_PLANE_ASSUME_ROLE_NAME|${data_plane_role_name}|g" "${deploy_dir}/config-cdc.yaml"
sed -i "s|DATA_PLANE_ASSUME_ROLE_NAME|${data_plane_role_name}|g" "${deploy_dir}/config-br.yaml"
sed -i "s|ENV|${env}|g" "${deploy_dir}/config-cdc.yaml"
sed -i "s|ENV|${env}|g" "${deploy_dir}/config-br.yaml"
sed -i "s|API_GATEWAY_KEY|${api_gateway_key}|g" "${deploy_dir}/api-gateway-token-secret.yaml"
sed -i "s|INFRA_API_SERVER_KEY|${infra_api_server_key}|g" "${deploy_dir}/infra-kubeconfig-secret.yaml"

sed -i "s|PROXY_AUTH0_SECRET_KEY|${cluster_proxy_auth0_secret_key}|g" "${deploy_dir}/auth0-secret.yaml"
sed -i "s|O11Y_AUTH0_SECRET_KEY|${o11y_auth0_secret_key}|g" "${deploy_dir}/auth0-secret.yaml"
