hyprdots/Scripts/restore_cfg.sh
2024-12-10 23:54:56 +01:00

83 lines
2.8 KiB
Bash
Executable file

#!/usr/bin/env bash
#|---/ /+--------------------------------+---/ /|#
#|--/ /-| Script to restore hyde configs |--/ /-|#
#|-/ /--| Prasanth Rangan |-/ /--|#
#|/ /---+--------------------------------+/ /---|#
scrDir=$(dirname "$(realpath "$0")")
source "${scrDir}/global_fn.sh"
if [ $? -ne 0 ]; then
echo "Error: unable to source global_fn.sh..."
exit 1
fi
CfgLst="${1:-"${scrDir}/restore_cfg.lst"}"
CfgDir="${2:-${cloneDir}/Configs}"
ThemeOverride="${3:-}"
if [ ! -f "${CfgLst}" ] || [ ! -d "${CfgDir}" ]; then
echo "ERROR: '${CfgLst}' or '${CfgDir}' does not exist..."
exit 1
fi
BkpDir="${HOME}/.config/cfg_backups/$(date +'%y%m%d_%Hh%Mm%Ss')${ThemeOverride}"
if [ -d "${BkpDir}" ]; then
echo "ERROR: ${BkpDir} exists!"
exit 1
else
mkdir -p "${BkpDir}"
fi
cat "${CfgLst}" | while read lst; do
ovrWrte=$(echo "${lst}" | awk -F '|' '{print $1}')
bkpFlag=$(echo "${lst}" | awk -F '|' '{print $2}')
pth=$(echo "${lst}" | awk -F '|' '{print $3}')
pth=$(eval echo "${pth}")
cfg=$(echo "${lst}" | awk -F '|' '{print $4}')
pkg=$(echo "${lst}" | awk -F '|' '{print $5}')
while read -r pkg_chk; do
if ! pkg_installed "${pkg_chk}"; then
echo -e "\033[0;33m[skip]\033[0m ${pth}/${cfg} as dependency ${pkg_chk} is not installed..."
continue 2
fi
done < <(echo "${pkg}" | xargs -n 1)
echo "${cfg}" | xargs -n 1 | while read -r cfg_chk; do
if [[ -z "${pth}" ]]; then continue; fi
tgt=$(echo "${pth}" | sed "s+^${HOME}++g")
if ( [ -d "${pth}/${cfg_chk}" ] || [ -f "${pth}/${cfg_chk}" ] ) && [ "${bkpFlag}" == "Y" ]; then
if [ ! -d "${BkpDir}${tgt}" ]; then
mkdir -p "${BkpDir}${tgt}"
fi
[ "${ovrWrte}" == "Y" ] && mv "${pth}/${cfg_chk}" "${BkpDir}${tgt}" || cp -r "${pth}/${cfg_chk}" "${BkpDir}${tgt}"
echo -e "\033[0;34m[backup]\033[0m ${pth}/${cfg_chk} --> ${BkpDir}${tgt}..."
fi
if [ ! -d "${pth}" ]; then
mkdir -p "${pth}"
fi
if [ ! -f "${pth}/${cfg_chk}" ]; then
cp -r "${CfgDir}${tgt}/${cfg_chk}" "${pth}"
echo -e "\033[0;32m[restore]\033[0m ${pth} <-- ${CfgDir}${tgt}/${cfg_chk}..."
elif [ "${ovrWrte}" == "Y" ]; then
cp -r "${CfgDir}$tgt/${cfg_chk}" "${pth}"
echo -e "\033[0;33m[overwrite]\033[0m ${pth} <-- ${CfgDir}${tgt}/${cfg_chk}..."
else
echo -e "\033[0;33m[preserve]\033[0m Skipping ${pth}/${cfg_chk} to preserve user setting..."
fi
done
done
if [ -z "${ThemeOverride}" ]; then
if nvidia_detect && [ $(grep '^source = ~/.config/hypr/nvidia.conf' "${HOME}/.config/hypr/hyprland.conf" | wc -l) -eq 0 ]; then
echo -e 'source = ~/.config/hypr/nvidia.conf # auto sourced vars for nvidia\n' >> "${HOME}/.config/hypr/hyprland.conf"
fi
fi