#!/usr/bin/env bash
set -e

function panic() {
  echo "ERROR: $*." >&2
  exit 1
}

#Paths
HUB_SERVICE_NAME=asic-hub
HUB_INSTALL_DIR="${HUB_INSTALL_DIR:-/opt/asic-hub}"
HUB_CONFIG_DIR="/etc/asic-hub"
HUB_DATA_DIR="/var/lib/asic-hub"
HUB_LOG_DIR="/var/log/asic-hub"
HUB_SYSTEMD_UNIT="/etc/systemd/system/asic-hub.service"
HUBCTL_SYMLINK="/usr/bin/hubctl"


function assert_is_root {
  # inline if sometimes terminates install script although user is root.
  if [ ${EUID:-$(id -u)} -ne 0 ]; then panic "you cannot perform this operation unless you are root"; fi
}

function ask_confirm {
	local default=${2:-false}
	read -p "$1 [y/n]: " -n 1 -r
	printf '\n'
	if [ -z "$REPLY" ]; then
		$default;
		return
	fi
	[[ ! $REPLY =~ ^[Yy]$ ]] && return 1
	return 0
}

function hub_uninstall {
	local keep_data=true

	printf 'This script will uninstall ASIC Hub from your device\n\n'
	ask_confirm "Uninstall ASIC Hub?" true || exit 1
	ask_confirm "Remove ASIC Hub user data?" true && keep_data=false

	if [ -f "$HUB_SYSTEMD_UNIT" ]; then
		echo ":: Stopping ASIC Hub service..."
		systemctl stop $HUB_SERVICE_NAME

		echo ":: Removing systemd unit file..."
		rm -f -v "$HUB_SYSTEMD_UNIT"

		echo ":: Reloading systemd configuration..."
		systemctl daemon-reload
	else
		echo "Warning: systemd unit file not found: '$HUB_SYSTEMD_UNIT'!"
	fi

	echo ":: Removing ASIC Hub files..."
	rm -f -v "$HUBCTL_SYMLINK"
	rm -rf -v "$HUB_INSTALL_DIR"
	rm -rf -v $HUB_CONFIG_DIR

	if [ "$keep_data" = false ]; then
		echo ":: Removing ASIC Hub user data..."
		rm -rf -v "$HUB_DATA_DIR"
		rm -rf -v "$HUB_LOG_DIR"
	else
		printf "\nKept user data:\n"
		printf "* Database: %s\n* Log files: %s\n" "$HUB_DATA_DIR" "$HUB_LOG_DIR"
	fi

	printf "\n[✓] Uninstall successful\n"
}

assert_is_root
hub_uninstall
