#!/usr/bin/env bash

# Configure the script to exit when a command fails.
set -e

: ${SCRIPTS_ROOT:="$(dirname $0)"/../../scripts}
export SCRIPTS_ROOT
source "${SCRIPTS_ROOT:?}"/util.sh

# ===== CONSTANTS =====

LOCAL_RUN_DIR="${REPOSITORY_ROOT:?}"/local-run
SELF_SCRIPTS="${LOCAL_RUN_DIR:?}"/scripts
source "${SELF_SCRIPTS:?}"/constants.sh

# ===== ARGUMENT PARSING =====

[ $# == 0 ] && die 'Expected at least one scenario name.'

# ===== MAIN LOGIC =====

reset-one() {
	SCENARIO_NAME="${1:?}"

	warn "Resetting scenario $(format_code "${SCENARIO_NAME:?}")…"

	unset PROSE_POD_API_DATA_DIR DATABASE_PATH MAILPIT_DATABASE_PATH ETC_PROSODY_DIR VAR_LIB_PROSODY_DIR PROSE_POD_SERVER_DATA_DIR PROSE_BACKUPS_DIR
	edo source "${SELF_SCRIPTS:?}"/scenario-files.sh

	if (( $DRY_RUN )); then
		dry_run "Reset API database at '${DATABASE_PATH:?}'"
	else
		trace "Reset API database at '${DATABASE_PATH:?}'"
		echo '' > "${DATABASE_PATH:?}"
	fi
	if (( $DRY_RUN )); then
		dry_run "Reset Mailpit database at '${MAILPIT_DATABASE_PATH:?}'"
	else
		trace "Reset Mailpit database at '${MAILPIT_DATABASE_PATH:?}'"
		echo '' > "${MAILPIT_DATABASE_PATH:?}"
	fi
	edo rm -rf "${ETC_PROSODY_DIR:?}"/prosody.cfg.lua
	edo rm -rf "${VAR_LIB_PROSODY_DIR:?}"/*%2e*
	edo rm -rf "${VAR_LIB_PROSODY_DIR:?}"/*.sqlite*
	edo rm -rf "${PROSE_POD_API_DATA_DIR:?}"/*
	edo rm -rf "${PROSE_POD_SERVER_DATA_DIR:?}"/*
	edo rm -rf "${PROSE_BACKUPS_DIR:?}"/*
}

for name in "$@"; do
	reset-one "$name"
done
