#!/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}
cloud=${5}
json_file_path=${6}

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

image_registry=$(echo "${additionalArgs}" | jq -r '.imageRegistry')

# 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

# Validate cloud provider
case "${cloud}" in
    aws|azure|gcp)
        ;;
    *)
        echo "invalid cloud provider: ${cloud}"
        exit 1
        ;;
esac

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

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

mkdir -p "${deploy_dir}"
echo "Prepare manifest files"

# Copy template files
cp ${template_dir}/* "${deploy_dir}/"

# Set up sed command based on OS
if [[ "$OSTYPE" == "darwin"* ]]; then
    # Require gnu-sed on macOS
    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

# Replace region in config
${SED_CMD} -i "s|REGION|${region}|g" "${deploy_dir}/config.yaml"

# Update version.yaml with image registry and version
${SED_CMD} -i "s|IMAGE_REGISTRY_PLACEHOLDER|${image_registry}|g" "${deploy_dir}/version.yaml"

echo "Successfully deployed tcidm regional service to ${cloud}-${env}-${logicalRegionName}"
