## Colors ----------------------------

# Text Reset
Color_Off='\033[0m'

# Regular
Black='\033[0;30m'  Red='\033[0;31m'     Green='\033[0;32m'  Yellow='\033[0;33m'
Blue='\033[0;34m'   Purple='\033[0;35m'  Cyan='\033[0;36m'   White='\033[0;37m'

# Bold
BBlack='\033[1;30m' BRed='\033[1;31m'    BGreen='\033[1;32m' BYellow='\033[1;33m'
BBlue='\033[1;34m'  BPurple='\033[1;35m' BCyan='\033[1;36m'  BWhite='\033[1;37m'

## -----------------------------------

## User info
user_name=`echo ${SUDO_USER:-$(whoami)}`
group_id=`echo ${SUDO_GID}`
user_group=`cat /etc/group | grep $group_id | cut -d: -f1 | head -1`

## Packages specific
config_dir="/home/${user_name}/.config"
skel_dir='/etc/skel/.config'
wm_config='i3'
wm_name='i3wm'
current_config="$config_dir/$wm_config"
updated_config="$config_dir/${wm_config}_pacnew_`date +%d-%m-%y`"
backup_config="$config_dir/${wm_config}_backup_`date +%d-%m-%y`"

## -----------------------------------

## Copy terminal config in /root
copy_term_cfg_root() {
	mkdir -p /root/.config/${wm_config} && cp -rf "$skel_dir/$wm_config/alacritty" $_
}

## Install Config files
install_wm_config() {
	echo -e ${Blue}"\n[*] Copying ${BBlue}${wm_name}${Blue} config files into ${BBlue}${config_dir}" ${Color_Off}
	mkdir -p "$current_config"
	cp -rf "$skel_dir/$wm_config"/* "$current_config"/
	chown -R ${user_name}:${user_group} "$current_config"

	if [[ -d "$current_config" ]]; then
		echo -e ${Green}"[*] Configuration files installed successfully!\n" ${Color_Off}
	else
		echo -e ${Red}"[!] Failed to install configuration files!\n" ${Color_Off}
	fi
}

## Update Config files
update_wm_config() {
	echo -e ${Blue}"\n[*] Copying latest ${BBlue}${wm_name}${Blue} config files into ${BBlue}${config_dir}" ${Color_Off}
	mkdir -p "$updated_config"
	cp -rf "$skel_dir/$wm_config"/* "$updated_config"/
	chown -R ${user_name}:${user_group} "$updated_config"

	if [[ -d "$updated_config" ]]; then
		echo -e ${Green}"[*] Latest configuration files installed successfully!" ${Color_Off}
		echo -e ${Yellow}"[+] Latest config files are stored in : ${BYellow}${updated_config}${Yellow}" ${Color_Off}		
		echo -e ${Purple}"[*] To use latest config files, rename ${BPurple}${updated_config}${Purple} to ${BPurple}${current_config}${Purple}\n" ${Color_Off}		
	else
		echo -e ${Red}"[!] Failed to install latest configuration files!\n" ${Color_Off}
	fi
}

## Backup Config files
backup_wm_config() {
	echo -e ${Blue}"\n[*] Backing-up your ${BBlue}${wm_name}${Blue} config files into ${BBlue}${config_dir}" ${Color_Off}
	mv "$current_config" "$backup_config"
	chown -R ${user_name}:${user_group} "$backup_config"

	if [[ -d "$backup_config" ]]; then
		echo -e ${Green}"[*] Your configuration files are backed-up successfully!" ${Color_Off}
		echo -e ${Yellow}"[+] Your Backup files are stored in : ${BYellow}${backup_config}${Yellow}" ${Color_Off}		
		echo -e ${Purple}"[*] To use your previous/modified config files, rename ${BPurple}${backup_config}${Purple} to ${BPurple}${current_config}${Purple}" ${Color_Off}		
	else
		echo -e ${Red}"[!] Failed to backup your configuration files!\n" ${Color_Off}
	fi
}

## -----------------------------------

## Main
run_main() {
	if [[ "$user_group" != 'liveuser' ]]; then
		if [[ ! -d "$current_config"  ]]; then
			install_wm_config
		else
			backup_wm_config
			install_wm_config
		fi
	fi
}

post_install() {
	copy_term_cfg_root
	run_main
}

post_upgrade() {
	copy_term_cfg_root
	run_main
}

post_remove() {
	if [[ -d "$current_config"  ]]; then
		echo -e ${Red}"\n[*] Config files for ${BYellow}${wm_name}${Red} are still available in : ${BGreen}${current_config}${Red} directory. If you want to remove them, Do it manually.\n" ${Color_Off}
	fi
}
