#!/usr/bin/env bash
set -euo pipefail

action=${1:-apply}
remote_config=${CONFIG_PATH}
local_config=${LOCAL_CONFIG_PATH}
# az storage blob copy "${remote_config}" "${local_config}"
region=$(yq '.region' "${local_config}")
env=$(yq '.env' "${local_config}")
aks_oidc_issuer=$(yq '.k8s.oidcIssuer' "${local_config}")
controlplane_subscription=$(yq '.azure.controlplaneSubscription' "${local_config}")
admin_group_id=$(yq '.azure.admin_group_id' "${local_config}")
job_id=$(yq '.jobId' "${local_config}")
remote_output=$(yq '.outputPath' "${local_config}")
local_output=/tmp/output.yaml
ROOT=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd)
tf_directory="${ROOT}"
tfstate_rg=$(yq '.terraformStateResourceGroup' "${local_config}")
tfstate_storage_account=$(yq '.terraformStateStorageAccount' "${local_config}")
tfstate_container=$(yq '.terraformStateContainer' "${local_config}")
acr_id_scope=$(yq '.acr_id_scope' "${local_config}")

set -x
cd "${tf_directory}/module"
tfstate="regional-control-plane/${env}/${controlplane_subscription}/${region}-tfstate.json"
terraform init -backend-config="subscription_id=${controlplane_subscription}" -backend-config="resource_group_name=${tfstate_rg}" -reconfigure -backend-config="storage_account_name=${tfstate_storage_account}" -backend-config="container_name=${tfstate_container}" -backend-config="key=${tfstate}"
if [ "${action}" = "apply" ]; then
  terraform ${action} -auto-approve -var="env=${env}" -var="location=${region}" -var="subscription_id=${controlplane_subscription}" -var="admin_group_id=${admin_group_id}" -var="acr_id_scope=${acr_id_scope}"
else
  terraform ${action} -var="env=${env}" -var="location=${region}" -var="subscription_id=${controlplane_subscription}" -var="admin_group_id=${admin_group_id}" -var="acr_id_scope=${acr_id_scope}"
fi
aks_oidc=$(terraform output -json | jq -r '.aks_oidc.value')

cat <<EOF > "${local_output}"
regional-control-plane:
  oidc-sever: ${aks_oidc}
EOF

# echo "Write output to Blob Storage..."
# aws s3 cp "${local_output}" "${remote_output}"
