#!/usr/bin/bash

if [[ "${BASH_SOURCE[0]}" != "${0}" ]]; then
  echo "This script is intended to be run, not sourced." >&2
  return 1
fi

set -e

set_django_secret_key() {
  podman secret rm discovery-django-secret-key >/dev/null 2>&1 || true
  printf '%s' "$1" | podman secret create discovery-django-secret-key -
  podman secret ls --filter name=discovery-django-secret-key
}

generate_key() {
  local discovery_django_secret_key
  discovery_django_secret_key=$(head -c 64 /dev/urandom | base64 | tr -dc 'a-zA-Z0-9')
  set_django_secret_key "${discovery_django_secret_key}"
}

prompt_key() {
  local discovery_django_secret_key
  read -srp "Enter the Discovery Django secret key: " discovery_django_secret_key
  echo
  if [ -z "${discovery_django_secret_key}" ]; then
    echo "The Discovery Django secret key cannot be empty."
    exit 1
  fi
  read -srp "Re-enter the secret key: " discovery_django_secret_key2
  echo
  if [ ! "${discovery_django_secret_key}" = "${discovery_django_secret_key2}" ]; then
    echo "Discovery Django secret keys do not match."
    exit 1
  fi
  set_django_secret_key "${discovery_django_secret_key}"
}

prompt_for_generation() {
  while true; do
    read -rp "Automatically generate new Django secret key? [y/n]: " yn
    case $yn in
    [Yy]*)
      generate_key
      exit
      ;;
    [Nn]*)
      prompt_key
      exit
      ;;
    esac
  done
}

while getopts "Yy" opt; do
  case $opt in
  [Yy])
    generate_key
    exit
    ;;
  *) ;;
  esac
done
prompt_for_generation
