#!/usr/bin/env bash

# TODO: ascii art header

INTERACTIVE=1

while test $# -gt 0; do
	case "$1" in
		-x|--non-interactive)
			INTERACTIVE=0
			shift
			;;
	esac
done

dfp=$(cd "$(dirname "${BASH_SOURCE[0]}" )/" && pwd)
source "${dfp}/scripts/setup_helpers.bash"

links=(
	# desktop environment files
	"$dfp/de/bspwm/bspwmrc"                  "$XDG_CONFIG_HOME/bspwm/bspwmrc"
	"$dfp/de/bspwm/fehbg"                    "$HOME/.fehbg"
	"$dfp/de/sway/config"                    "$XDG_CONFIG_HOME/sway/config"
	"$dfp/de/sxhkd/sxhkdrc"                  "$XDG_CONFIG_HOME/sxhkd/sxhkdrc"
	"$dfp/de/x/resources"                    "$HOME/.Xresources"
	"$dfp/de/x/initrc"                       "$HOME/.xinitrc"
	"$dfp/de/x/initrc"                       "$HOME/.vnc/xstartup"
	"$dfp/de/x/profile"                      "$HOME/.xprofile"
	"$dfp/de/x/modmap"                       "$HOME/.xmodmap"
	"$dfp/de/compton/compton.conf"           "$XDG_CONFIG_HOME/compton.conf"
	"$dfp/de/dunst/dunstrc"                  "$XDG_CONFIG_HOME/dunst/dunstrc"
	"$dfp/scripts/colors/xresources"         "$HOME/.Xresources.colors"

	# shell files
	"$dfp/shell/bash/bashrc"                 "$HOME/.bashrc"
	"$dfp/shell/bash/bash_profile"           "$HOME/.bash_profile"
	"$dfp/shell/tmux/tmux.conf"              "$HOME/.tmux.conf"
	"$dfp/shell/tmux/layouts"                "$HOME/.tmux/layouts"

	# text editor files
	"$dfp/apps/neovim/"                      "$XDG_CONFIG_HOME/nvim"
	"$dfp/apps/neovim/"                      "$HOME/.vim"
	"$dfp/apps/neovim/init.vim"              "$HOME/.vimrc"
	"$dfp/scripts/colors/vim"                "$XDG_CONFIG_HOME/nvim/colors/base16-donokai.vim"

	# gtk configuration files
	"$dfp/de/gtk/2rc"                        "$HOME/.gtkrc-2.0"
	"$dfp/de/gtk/2rc"                        "$HOME/.gtkrc"
	"$dfp/de/gtk/3settings.ini"              "$XDG_CONFIG_HOME/gtk-3.0/settings.ini"

	# irc files
	"$dfp/apps/irssi/"                       "$HOME/.irssi"
	"$dfp/apps/weechat/"                     "$HOME/.weechat"

	# qutebrowser config files
	"$dfp/apps/qutebrowser/qutebrowser.conf" "$XDG_CONFIG_HOME/qutebrowser/qutebrowser.conf"
	"$dfp/apps/qutebrowser/keys.conf"        "$XDG_CONFIG_HOME/qutebrowser/keys.conf"

	# sc-im config files and scripts
	"$dfp/apps/scim/rc"                      "$HOME/.scimrc"
	"$dfp/apps/scim/lua"                     "$HOME/.scim/lua"

	# libinput configuration
	"$dfp/de/libinput/gestures.conf"         "$XDG_CONFIG_HOME/libinput-gestures.conf"

	# document viewer
	"$dfp/apps/zathura/"                     "$XDG_CONFIG_HOME/zathura"

	# terminal emulator
	"$dfp/apps/alacritty/"                   "$XDG_CONFIG_HOME/alacritty"

	# kitty config
	"$dfp/apps/kitty/"                       "$XDG_CONFIG_HOME/kitty"

	# rofi config
	"$dfp/apps/rofi/config"                  "$XDG_CONFIG_HOME/rofi/config"

	# bar files
	"$dfp/de/bar/polybar-config"             "$XDG_CONFIG_HOME/polybar/config"

	# ranger config
	"$dfp/apps/ranger/"                      "$XDG_CONFIG_HOME/ranger"

	# mutt config
	"$dfp/apps/mutt/muttrc"                  "$XDG_CONFIG_HOME/.muttrc"
	"$dfp/apps/mutt/muttrc"                  "$HOME/.muttrc"

	# neofetch config
	"$dfp/apps/neofetch/config"              "$XDG_CONFIG_HOME/neofetch/config"

	# git config
	"$dfp/apps/git/config"                   "$HOME/.gitconfig"

	# fontconfig
	"$dfp/de/fontconfig/"                    "$XDG_CONFIG_HOME/fontconfig"

	# XDG user directories
	"$dfp/shell/user-dirs"                   "$XDG_CONFIG_HOME/user-dirs.dirs"
)

# TODO: pass interactive?
_dotfiles_setup_run_setup "$dfp/.agreed-to-erasing-files.lock" "${links[@]}"

if [[ "$INTERACTIVE" = 1 ]]; then
	echo -n -e "Do you want to run the sudo_setup script for changes to /etc"
	echo -n -e "\nand other root directories?"
	read -r -p " [y/N] " response
	response=${response,,} # to lower case
	if [[ $response =~ ^(yes|y)$ ]]; then
		"$dfp/sudo_setup"
	fi

	echo -e "Dotfiles Installed! Running 'exec bash'...\n"
	exec bash
fi