#!/usr/bin/env sh

_autoinstall_all () {
	plug_path="$HOME/.config/vim/autoload/plug.vim"
	if [ ! -f "$plug_path" ]
	then
		_autoinstall_file "https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim" "$plug_path"
		[ -x "$(command -v vim)" ] && yes | vim +'PlugInstall --sync' +qa --not-a-term
	fi

	nvim_dir="$HOME/.config/nvim"
	if [ ! -d "$nvim_dir" ]
	then
		_autoinstall_git "https://github.com/AstroNvim/AstroNvim" "$nvim_dir"
		[ -x "$(command -v nvim)" ] && nvim --headless -c 'autocmd User PackerComplete quitall' -c 'PackerSync'
	fi

	if [ ! -x "$(command -v starship)" ]
	then
		mkdir -p "$HOME/.local/bin"
		curl -sS "https://starship.rs/install.sh" | BIN_DIR="$HOME/.local/bin" FORCE=1 sh
	fi

	if [ -x "$(command -v envsubst)" ]
	then
		wakatime_cfg="$WAKATIME_HOME/.wakatime.cfg"
		wakatime_tpl="$wakatime_cfg.tpl"
		envsubst < "$wakatime_tpl" > "$wakatime_cfg"
	fi

	cp -n "$HOME/.ssh/authorized_keys.default" "$HOME/.ssh/authorized_keys"

	_autoinstall_file \
		"https://raw.githubusercontent.com/qw3rtman/git-fire/master/git-fire" \
		"$HOME/.local/bin/git-fire"

	_autoinstall_file \
		"https://raw.githubusercontent.com/dracula/alacritty/master/dracula.yml" \
		"$HOME/.config/alacritty/dracula.yml"

	_autoinstall_file \
		"https://raw.githubusercontent.com/dracula/duckduckgo/master/monkeyscript.user.js" \
		"$HOME/.local/share/qutebrowser/greasemonkey/ddg-dracula.user.js"

	_autoinstall_git \
		"https://github.com/dracula/qutebrowser.git" \
		"$HOME/.config/qutebrowser/dracula"

	_autoinstall_git \
		"https://github.com/dracula/gtk.git" \
		"$HOME/.themes/Dracula"
}

_autoinstall_git () {
	if [ ! -d "$2" ]
	then
		echo "Installing repo $1 to $2"
		mkdir -p "$2"
		git clone "$1" "$2" >/dev/null 2>&1
	fi
}

_autoinstall_file () {
	if [ ! -f "$2" ]
	then
		echo "Installing file $1 to $2"
		file_path=$(dirname "$2")
		mkdir -p "$file_path"
		cd "$file_path" || exit
		curl -sSo "$2" "$1"
	fi
}

case $1 in
	all)		_autoinstall_all ;;
	git)		_autoinstall_git "$2" "$3" ;;
	file)		_autoinstall_file "$2" "$3" ;;
	*)			echo "'$1' is not valid" ;;
esac