#!/usr/bin/env bash

#
# A script to upgrade existing installations of ArchLabs
#
# Written by Nathaniel Maia <natemaia10@gmail.com>
#

REPO='
[archlabs_repo]
Server = https://archlabs.github.io/archlabs_repo/$arch
Server = https://downloads.sourceforge.net/project/archlabs-repo/archlabs_repo/$arch'

KEYS=('AEFB411B072836CD48FF0381AE252C284B5DBA5D'
      '9E4F11C6A072942A7B3FD3B0B81EB14A09A25EB0'
      '35F52A02854DCCAEC9DD5CC410443C7F54B00041')
curWM=$(wmctrl -m | grep Name | cut -d " " -f2)
yes="y"
no="n"



# Loop until network connected
while ! [[ $net >/dev/null ]]; do
  net=$(ping -c1 8.8.8.8 2>&1)
  echo -e "Please Connect to a Network Before Continuing"
  clear; sleep 1
done



setupKeyring() {

clear
echo "############################################################################################
########             Setting up keyring & Adding repo to pacman.conf               #########
############################################################################################"
sleep 2

# import each key and populate the keyring
sudo pacman-key --init
sudo pacman-key --populate archlinux
for key in "${KEYS[@]}"; do
  if ! sudo pacman-key --list-keys | grep $key; then
    gpg --receive-keys $key
    sudo pacman-key -r $key
  fi
done


# add $REPO to pacman.conf
if ! grep "archlabs_repo" /etc/pacman.conf; then
  echo "$REPO" | sudo tee -a /etc/pacman.conf

else  # if entries exist remove them
  sudo sed -i '/archlabs_repo/d' /etc/pacman.conf
  echo "$REPO" | sudo tee -a /etc/pacman.conf

fi


# finish populating the keyring
sudo pacman -S archlabs-keyring --needed --noconfirm
sudo pacman-key --populate archlabs


}



backupConfigs() {

clear
echo "############################################################################################
########   Backing up configs to /home/$USER/Downloads/$USER-config-backup.tar.gz  #########
############################################################################################"

# Backup configs to $HOME/Downloads/ if backup doesn't exist already
if ! [ -e "$HOME/Downloads/$USER-config-backup.tar.gz" ]; then
  tar czvf "$HOME/Downloads/$USER-config-backup.tar.gz" "$HOME"/.{config,Xresources,zshrc,bashrc,icons,xsession,xsessionrc,xinitrc} > /dev/null 2>&1

else
  echo "[WARNING]  Backup already exists... Not overwriting"
  sleep 2

fi


}



setupConfigs() {

clear
echo "############################################################################################
########                           Setting up new configs                          #########
############################################################################################"
sleep 2

# cleanup ~/.config
rm -rf "$HOME"/.config/{bspwm,dunst,i3,obmenu-generator,qt5ct,Thunar,conky,geany,neofetch,polybar,termite,xfce4,openbox}

# clean /etc/skel
sudo rm -rf /etc/skel/*

# Copy configs to /etc/skel
sudo cp -rf "$PWD"/home/{bin,.ArchLabs-homepage,.config,.themes,.gorice,.Xresources,.Xresources.template,.mozilla,.zshrc,.bashrc,.icons,.local,.xsession,.xsessionrc,.xinitrc} /etc/skel/

# copy /etc (things like lightdm.conf, oblogout.conf, lsb-release)
sudo cp -rf "$PWD"/etc /

# copy /etc/skel to $HOME
cp -rf /etc/skel/{bin,.ArchLabs-homepage,.config,.themes,.gorice,.Xresources,.Xresources.template,.mozilla,.zshrc,.bashrc,.icons,.local,.xsession,.xsessionrc,.xinitrc} "$HOME"/


}



# first setupKeyring
setupKeyring

# ask to setup configs
clear
printf "\nThis step will get the latest configs for polybar, tint2, openbox, i3, etc.
\n\nYour existing configs will be backed up to an archive located at:
\n\t$HOME/Downloads/$USER-config-backup.tar.gz\n\n\n\nDo you want to continue?  [y/N]:"
read -r answer

if [ "${answer,,}" = "${yes,,}" ]; then

  # backup configs before continuing
  backupConfigs

  # setupConfigs only if a backup was made
  if [ -e "$HOME/Downloads/$USER-config-backup.tar.gz" ]; then
    setupConfigs
  fi

  # finish up by running setup then reloading everything
  $HOME/.config/setup
  if [[ $curWM == i3 ]]; then
    i3-msg restart
  else
    $HOME/.config/polybar/scripts/launch-polybar --reload > /dev/null 2>&1
  fi


else # only setup skel if answered no

  # remove old configs and copy new
  sudo rm -rf /etc/skel/*
  sudo cp -rf "$PWD"/home/{bin,.ArchLabs-homepage,.config,.themes,.gorice,.Xresources,.Xresources.template,.mozilla,.zshrc,.bashrc,.icons,.local,.xsession,.xsessionrc,.xinitrc} /etc/skel/
  sudo cp -rf "$PWD"/etc /

fi



clear
echo "############################################################################################
########                       Setup Successfully Completed                        #########
############################################################################################"


exit 0
