#!/bin/sh

# TODO: add support for multiple profiles (custom $DST; always assume --nobacksync)

die() {
	echo $@
	exit 1
}

usage() {
	echo "Usage: ${ME} [--nosync | --nobacksync | --prepare | --clean]"
}

ME=$(basename $0)

case ${ME} in
	ccc*)
		BROWSER=chromium
		;;
	vvv*)
		BROWSER=vivaldi
		;;
	*)
		die "I do not know my name ${ME}"
		;;
esac

[ -z "${HOME}" ] && die "\$HOME environment variable is not set"

SRC="${HOME}/.config/${BROWSER}"

[ -d ${SRC} ] || die "There is no ${BROWSER} configuration directory \"${SRC}\""

DST=/tmp/$(whoami)/${BROWSER}-user-data-dir

[ -d ${DST} ] || mkdir -p ${DST} || die "Unable to create temporary storage \"${DST}\""

NOBACKSYNC=""

if [ $# -eq 1 ]; then
	case $1 in
		"--nosync")
			NOBACKSYNC="YES"
			# Do nothing, proceed to start browser
			;;
		"--nobacksync")
			NOBACKSYNC="YES"
			# Fall through
			;&
		"--prepare")
			# Sync from $HOME to $TMPDIR
			rsync -av --delete-after ${SRC}/ ${DST}
			[ -z "${NOBACKSYNC}" ] && exit 0
			;;
		"--clean")
			# Remove $TMPDIR
			rm -rf ${DST}
			exit 0
			;;
		*)
			die $(usage)
			;;
	esac
else
	[ $# -eq 0 ] || die $(usage)
	$0 --prepare
fi

SUFFIXES="-stable"

EXE=$(which "${BROWSER}" 2>/dev/null)

if [ -n "${EXE}" ]; then
	${EXE} --user-data-dir=${DST}
else
	for SUFFIX in ${SUFFIXES}; do
		EXE=$(which "${BROWSER}${SUFFIX}" 2>/dev/null)
		if [ -n "${EXE}" ]; then
			${EXE} --user-data-dir=${DST}
			break;
		fi
	done
fi

# Delete browser cache even if --no[back]sync was passed
[ -d "${DST}/Default/Cache" ] && rm -rf "${DST}/Default/Cache"

# Sync back from $TMPDIR to $HOME, if necessary
[ -z "${NOBACKSYNC}" ] && rsync -av --delete-after ${DST}/ ${SRC}
