#!/usr/bin/env bash
#MISE description="Сгенерировать .env.config и backend.hcl из config.yaml"
set -euo pipefail

cd "$(dirname "$0")/.."

INFRA=$(echo 'jsonencode(yamldecode(file("config.yaml")).infra)' | terraform console | jq -r .)
get() { jq -er "$1" <<<"$INFRA" || { echo "в config.yaml нет infra$1" >&2; exit 1; }; }

cat >.env.config.tmp <<ENV
# Сгенерировано задачей mise run render из config.yaml, не редактировать
POSTGRES_IMAGE=$(get .postgres.image)
POSTGRES_USER=$(get .postgres.admin_user)
POSTGRES_PORT=$(get .postgres.port)
PGADMIN_IMAGE=$(get .pgadmin.image)
PGADMIN_PORT=$(get .pgadmin.port)
PGADMIN_EMAIL=$(get .pgadmin.email)
SILO_IMAGE=$(get .silo.image)
SILO_USER=$(get .silo.admin_user)
SILO_STORAGE_PORT=$(get .silo.port)
SILO_WEB_PORT=$(get .silo.console_port)
VAULT_IMAGE=$(get .vault.image)
VAULT_PORT=$(get .vault.port)
VAULT_ADDR=http://$(get .vault.host):$(get .vault.port)
VAULT_MOUNT=$(get .vault.mount)
VAULT_DATABASE_MOUNT=$(get .vault.database_mount)
BACKUP_BUCKET=$(get .silo.backup_bucket)
ENV

cat >backend.hcl.tmp <<HCL
# Сгенерировано задачей mise run render из config.yaml, не редактировать
bucket = "$(get .silo.state_bucket)"
region = "us-east-1"
endpoints = {
  s3 = "http://$(get .silo.host):$(get .silo.port)"
}
use_path_style              = true
skip_credentials_validation = true
skip_region_validation      = true
skip_requesting_account_id  = true
skip_metadata_api_check     = true
skip_s3_checksum            = true
HCL

mv .env.config.tmp .env.config
mv backend.hcl.tmp backend.hcl
