#!/usr/bin/env bash

# Configure shell.
set -m

# User-friendly print wrapper.
log() {
  printf '[%s] [%s] %s\n' "${0##*/}" "$( date '+%Y-%m-%dT%H:%M:%S' )" "${@}"
}

# Configure default environment variables.
export SCHEMA_REGISTRY_LISTENERS="http://0.0.0.0:${REGISTRY_PORT}"
export SCHEMA_REGISTRY_HOST_NAME="localhost"

# Configure unique group ID per application cluster.
export SCHEMA_REGISTRY_SCHEMA_REGISTRY_GROUP_ID="schema-registry-${SCHEMA_REGISTRY_GROUP_UNIQUE_IDENTIFIER}"

log 'Configuring truststore location'
JAVA_HOME=$(java -XshowSettings:properties -version 2>&1 > /dev/null | grep -i java.home | awk '{print $3}')
CACERT_FILE=$(find "${JAVA_HOME}" -type f -name "cacerts" | awk 'NR==1{print $1}')
export SCHEMA_REGISTRY_KAFKASTORE_TRUSTSTORE_LOCATION="${CACERT_FILE}"

# Assume this is a Fargate task. Find the private IP address without installing additional packages.
if [[ "${Environment}" != 'local' ]]; then
  log 'Setting proper hostname from Fargate metadata'
  DNS_NAME=$(curl -s ${ECS_CONTAINER_METADATA_URI_V4}/task | jq -r '.Containers[0].Networks[0].PrivateDNSName')
  log "Task DNS name is ${DNS_NAME}"
  export SCHEMA_REGISTRY_HOST_NAME="${DNS_NAME}"
fi

# Launch schema definition upload script.
log 'Launching upload-schemas.sh'
/usr/local/bin/upload-schemas.sh &

# Launch the base container entry point.
log 'Launching schema-registry entrypoint'
exec '/etc/confluent/docker/run'
