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

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

image_registry=$(jq -r '.image_registry' "${json_file_path}")
rds_host=$(jq -r '.rds.host // ""' "${json_file_path}")
rds_port=$(jq -r '.rds.port // ""' "${json_file_path}")
rds_db=$(jq -r '.rds.db // ""' "${json_file_path}")
rds_username=$(jq -r '.rds.username // ""' "${json_file_path}")
rds_password_secret_name=$(jq -r '.rds.password_secret_name // ""' "${json_file_path}")

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

echo "Prepare manifest files"
cp "${variant_dir}/kustomization_tmpl.yaml" "${deploy_dir}/kustomization.yaml"
cp "${variant_dir}/config_tmpl.toml" "${deploy_dir}/config.toml"
cp "${variant_dir}/db-password_tmpl.yaml" "${deploy_dir}/db-password.yaml"

# https://stackoverflow.com/questions/4247068/sed-command-with-i-option-failing-on-mac-but-works-on-linux
if [[ "$OSTYPE" == "darwin"* ]]; then
  # Require gnu-sed.
  if ! [ -x "$(command -v gsed)" ]; then
    echo "Error: 'gsed' is not istalled." >&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

${SED_CMD} -i "s|TMPL_LOGICAL_REGION|${logicalRegionName}|g" "${deploy_dir}/config.toml"
${SED_CMD} -i "s|TMPL_RDS_HOST|${rds_host}|g" "${deploy_dir}/config.toml"
${SED_CMD} -i "s|TMPL_RDS_PORT|${rds_port}|g" "${deploy_dir}/config.toml"
${SED_CMD} -i "s|TMPL_RDS_DATABASE|${rds_db}|g" "${deploy_dir}/config.toml"
${SED_CMD} -i "s|TMPL_RDS_USERNAME|${rds_username}|g" "${deploy_dir}/config.toml"
${SED_CMD} -i "s|TMPL_IMAGE_REGISTRY|${image_registry}|g" "${deploy_dir}/kustomization.yaml"
${SED_CMD} -i "s|TMPL_RDS_PASSWORD_SECRET_NAME|${rds_password_secret_name}|g" "${deploy_dir}/db-password.yaml"
