#!/usr/bin/env bash

# #<---------------------------->
# # You must include this section when:
# # Distributing, Using and/or Modifying this code.
# # Please read and abide by the terms of the included LICENSE.
# # Copyright 2020, Deepankar Chakroborty, All rights reserved.
# #  
# #  Version : 0.1
# #  Author : Deepankar Chakroborty (https://github.com/dchakro)
# #  Report issues: https://github.com/dchakro/alacritty_colors/issues
# #  License: https://github.com/dchakro/alacritty_colors/blob/master/LICENSE
# #<---------------------------->

# Make a theme list

declare -a arrFiles
cd themes
for file in *.yml
do
    arrFiles=("${arrFiles[@]}" "$file")
done
cd ..


RESET()
{
# Copies ./base.yml -> ~/.alacritty.yml
echo ""
echo 'This will overwrite your ~/.alacritty.yml with ./base.yml'
while true; do
		read -p "Restore base config (y/N): " backup_choice1
		case $backup_choice1 in
	       	[Yy]* )  
	       		cp ./base.yml ~/.alacritty.yml && echo "Config reset to base!"
	       		break 
	       		;;
	       	[Nn]* )  
	       		echo "Reset aborted."
	       		break
	       		;;
	       	* )
	       		echo "Please answer with either Y/y or N/n."
	   	esac
	done

}

BACKUP()
{
# Backs up ~/.alacritty.yml as ~/.alacritty.bak.yml
if [ ! -f ~/.alacritty.yml ] ; then
	echo '~/.alacritty.yml does not exist!'
	RESET
fi

if [ ! -f ~/.alacritty.bak.yml ] ; then
	cp ~/.alacritty.yml ~/.alacritty.bak.yml && echo "Config backup successful!"
else
	while true; do
		read -p "Backup exists. Overwrite? (y/N): " backup_choice2
	    case $backup_choice2 in
	       	[Yy]* )  
	       		cp ~/.alacritty.yml ~/.alacritty.bak.yml && echo "Backup overwrite successful!"
	       		break 
	       		;;
	       	[Nn]* )  
	       		echo "Backup aborted."
	       		break
	       		;;
	       	* )
	       		echo "Please answer with either Y/y or N/n."
	   	esac
	done
fi
}

RESTORE()
{
if [ -f ~/.alacritty.bak.yml ] ; then
   cp -f ~/.alacritty.bak.yml ~/.alacritty.yml && echo "Config restored!"   
else
	echo "Backup config for alacritty does not exist!!"
	exit 1
fi
}


LIST_THEMES()
{
echo 'Availabe themes:'
declare -i counter
counter=1
for item in "${arrFiles[@]}"
do
    echo "# ${counter} :${item}"
    counter=($counter+1)
done
}

APPLY_THEMES()
{
LIST_THEMES
read -p "Choose (default=1): " inp
if [ -z "${inp}" ]; then
	inp=1
fi
inp=$((inp-1)) # as array indices start from 0
echo ""
echo "Applying the theme: ${arrFiles[inp]}"

cat ./base.yml ./themes/${arrFiles[inp]} >| ~/.alacritty.yml
bash ./show_colors.sh

while true; do
	read -p "Keep changes (Y/n): " choice
	case $choice in
	   	[Yy]* )  
	   		echo "Theme set to: ${arrFiles[inp]}"
	   		exit 0 
     		;;
       	[Nn]* )  
       		RESTORE
       		break
       		;;
       	* )
       		echo "Please answer with either Y/y or N/n."
	   	esac
done
}

while true
do
	reset_choice=""
	choice=""
	backup_choice1=""
	backup_choice2=""
	inp=""
	
	
	printf ' -- Apply alacritty themes -- 
	1) Apply Themes
	2) Backup .alacritty.yml
	3) Restore the backup
	4) Reset config (no defined color scheme)
	5) Exit
	  
	Enter: ';
	read var;
	
	if [ "$var" -eq "1" ]; then
		APPLY_THEMES
	fi
	if [ "$var" -eq "2" ]; then
		BACKUP
		exit 0
	fi
	if [ "$var" -eq "3" ]; then
		RESTORE
		exit 0
	fi
	if [ "$var" -eq "4" ]; then
		RESET
		exit 0
	fi
	if [ "$var" -eq "5" ]; then
		exit 0
	fi
done