Several restore checks added

This commit is contained in:
Fr4nz D13trich 2026-01-18 00:15:42 +01:00
parent 6c601ad66b
commit 4932d84c67

View file

@ -5,6 +5,7 @@ set -e
## SOME COLOR ## SOME COLOR
CYN="\e[0;36m" CYN="\e[0;36m"
MGT="\e[0;35m"
YEL="\e[0;33m" YEL="\e[0;33m"
RED="\e[0;31m" RED="\e[0;31m"
GRN="\e[0;32m" GRN="\e[0;32m"
@ -49,7 +50,7 @@ APP_SOURCE_URL=https://api.github.com/repos/imputnet/helium-linux/releases/lates
#################### DEPENDENCY CHECK #################### #################### DEPENDENCY CHECK ####################
cmd_query() { cmd_query() {
if ! command -v $PACKAGE > /dev/null 2>&1 ; then if ! command -v $PACKAGE > /dev/null 2>&1 ; then
echo " - $PACKAGE" >> $TMP/missingDeps echo " - $PACKAGE" >> $TMP/missingDeps
fi fi
} }
@ -74,13 +75,12 @@ shell_query() {
if [ "$(echo $SHELL | grep "$SHELL_OPTION")" ] ; then if [ "$(echo $SHELL | grep "$SHELL_OPTION")" ] ; then
ACTIVE_SHELL=$SHELL_OPTION ACTIVE_SHELL=$SHELL_OPTION
fi fi
} }
shell_check() { shell_check() {
SHELLS=("bash" "fish" "zsh") SHELLS=("bash" "fish" "zsh")
for SHELL_OPTION in "${SHELLS[@]}" ; do for SHELL_OPTION in ${SHELLS[@]} ; do
shell_query "$SHELL_OPTION" shell_query "$SHELL_OPTION"
done done
} }
@ -354,7 +354,7 @@ call_backup() {
if [[ "$OVERWRITE_BACKUP" == "" || "$OVERWRITE_BACKUP" == "n" || "$OVERWRITE_BACKUP" == "N" ]] ; then if [[ "$OVERWRITE_BACKUP" == "" || "$OVERWRITE_BACKUP" == "n" || "$OVERWRITE_BACKUP" == "N" ]] ; then
echo -e "\n ${YEL}Skipping backup process...${CRS}\n" echo -e "\n ${YEL}Skipping backup process...${CRS}\n"
break exit_clean
elif [[ "$OVERWRITE_BACKUP" == "y" || "$OVERWRITE_BACKUP" == "Y" ]] ; then elif [[ "$OVERWRITE_BACKUP" == "y" || "$OVERWRITE_BACKUP" == "Y" ]] ; then
echo -e "\n ${YEL}Overwriting backup...${CRS}" echo -e "\n ${YEL}Overwriting backup...${CRS}"
@ -378,20 +378,32 @@ backup_logger() {
if [ "$ACTIVE_SHELL" == "zsh" ] ; then if [ "$ACTIVE_SHELL" == "zsh" ] ; then
if [ "$(cat $HOME/.zshrc | grep "$ALIAS")" ] ; then if [ "$(cat $HOME/.zshrc | grep "$ALIAS")" ] ; then
echo " # Shell : $ACTIVE_SHELL" >> $TMP/backup/conf_log echo " # Shell : $ACTIVE_SHELL" >> $TMP/backup/conf_log
echo " # Alias : TRUE" >> $TMP/backup/conf_log echo " # Alias : TRUE" >> $TMP/backup/conf_log
elif ! [ "$(cat $HOME/.zshrc | grep "$ALIAS")" ] ; then
echo " # Shell : $ACTIVE_SHELL" >> $TMP/backup/conf_log
echo " # Alias : FALSE" >> $TMP/backup/conf_log
fi fi
elif [ "$ACTIVE_SHELL" == "bash" ] ; then elif [ "$ACTIVE_SHELL" == "bash" ] ; then
if [ "$(cat $HOME/.bashrc | grep "$ALIAS")" ] ; then if [ "$(cat $HOME/.bashrc | grep "$ALIAS")" ] ; then
echo " # Shell : $ACTIVE_SHELL" >> $TMP/backup/conf_log echo " # Shell : $ACTIVE_SHELL" >> $TMP/backup/conf_log
echo " # Alias : TRUE" >> $TMP/backup/conf_log echo " # Alias : TRUE" >> $TMP/backup/conf_log
elif ! [ "$(cat $HOME/.bashrc | grep "$ALIAS")" ] ; then
echo " # Shell : $ACTIVE_SHELL" >> $TMP/backup/conf_log
echo " # Alias : FALSE" >> $TMP/backup/conf_log
fi fi
elif [ "$ACTIVE_SHELL" == "fish" ] ; then elif [ "$ACTIVE_SHELL" == "fish" ] ; then
if [ "$(cat $HOME/.config/fish/config.fish | grep "source $HOME/.config/fish/$ALIAS.fish")" ] ; then if [ "$(cat $HOME/.config/fish/config.fish | grep "source $HOME/.config/fish/$ALIAS.fish")" ] ; then
echo " # Shell : $ACTIVE_SHELL" >> $TMP/backup/conf_log echo " # Shell : $ACTIVE_SHELL" >> $TMP/backup/conf_log
echo " # Alias : TRUE" >> $TMP/backup/conf_log echo " # Alias : TRUE" >> $TMP/backup/conf_log
elif ! [ "$(cat $HOME/.config/fish/config.fish | grep "source $HOME/.config/fish/$ALIAS.fish")" ] ; then
echo " # Shell : $ACTIVE_SHELL" >> $TMP/backup/conf_log
echo " # Alias : FALSE" >> $TMP/backup/conf_log
fi fi
else else
@ -417,10 +429,10 @@ backup_logger() {
echo >> $TMP/backup/conf_log echo >> $TMP/backup/conf_log
echo "### $SCRIPT_FILE_NAME VARIABLES ###" >> $TMP/backup/conf_log echo "### $SCRIPT_FILE_NAME VARIABLES ###" >> $TMP/backup/conf_log
echo >> $TMP/backup/conf_log echo >> $TMP/backup/conf_log
echo "INSTALL_PATH=$INSTALL_PATH" >> $TMP/backup/conf_log echo "INSTALL_PATH = $INSTALL_PATH" >> $TMP/backup/conf_log
echo "SCRIPT_PATH=$SCRIPT_PATH" >> $TMP/backup/conf_log echo "SCRIPT_PATH = $SCRIPT_PATH" >> $TMP/backup/conf_log
echo "LAUNCHER_PATH=$LAUNCHER_PATH" >> $TMP/backup/conf_log echo "LAUNCHER_PATH = $LAUNCHER_PATH" >> $TMP/backup/conf_log
echo "APP_CONFIG_PATH=$APP_CONFIG_PATH" >> $TMP/backup/conf_log echo "APP_CONFIG_PATH = $APP_CONFIG_PATH" >> $TMP/backup/conf_log
echo >> $TMP/backup/conf_log echo >> $TMP/backup/conf_log
} }
@ -448,7 +460,7 @@ script_backup() {
pack_backup pack_backup
else else
echo -e " ${YEL}Nothing to back up...${CRS}" echo -e "\n ${YEL}Nothing to back up...${CRS}\n"
fi fi
} }
@ -460,7 +472,7 @@ app_backup() {
pack_backup pack_backup
else else
echo -e " ${YEL}Nothing to back up...${CRS}" echo -e "\n ${YEL}Nothing to back up...${CRS}\n"
fi fi
} }
@ -472,7 +484,7 @@ config_backup() {
pack_backup pack_backup
else else
echo -e " ${YEL}Nothing to back up...${CRS}" echo -e "\n ${YEL}Nothing to back up...${CRS}\n"
fi fi
} }
@ -484,7 +496,7 @@ full_backup() {
pack_backup pack_backup
else else
echo -e " ${YEL}Nothing to back up...${CRS}" echo -e "\n ${YEL}Nothing to back up...${CRS}\n"
fi fi
} }
@ -611,8 +623,6 @@ select_backup() {
BACKUP_COMPRESSION=$(file $RESTORE_SOURCE | awk '{print $2}') BACKUP_COMPRESSION=$(file $RESTORE_SOURCE | awk '{print $2}')
decompress_backup decompress_backup
configure_restore
restore_backup
} }
decompress_backup() { decompress_backup() {
@ -630,64 +640,149 @@ decompress_backup() {
tar -xzf $APP_NAME.*.backup_*.tar.gz tar -xzf $APP_NAME.*.backup_*.tar.gz
rm $APP_NAME.*.backup_*.tar.gz rm $APP_NAME.*.backup_*.tar.gz
elif [ "$BACKUP_COMPRESSION" == "zip" ] ; then elif [ "$BACKUP_COMPRESSION" == "Zip" ] ; then
unzip $APP_NAME.*.backup_*.tar.zip unzip $APP_NAME.*.backup_*.tar.zip > /dev/null 2>&1
tar -xf $APP_NAME.*.backup_*.tar tar -xf $APP_NAME.*.backup_*.tar
rm $APP_NAME.*.backup_*.tar.zip $APP_NAME.*.backup_*.tar.zip rm $APP_NAME.*.backup_*.tar.zip $APP_NAME.*.backup_*.tar
else else
echo -e " ${YEL}TBA...${CRS}\n" ####################################################################### echo -e " ${YEL}TBA...${CRS}\n" #######################################################################
fi fi
configure_restore
} }
configure_restore() { configure_restore() {
echo -e " - ${CRS}Analysing ${CYN}$BACKUP_TYPE${CRS} backup content...${CRS}\n" echo -e " - ${CRS}Analysing ${CYN}$BACKUP_TYPE${CRS} backup content...${CRS}\n"
RESTORABLE=("$APP_NAME.$FILE_EXTENSION" "$SCRIPT_FILE_NAME" "$AUTO_SCRIPT_FILE_NAME" "$APP_NAME.desktop" "$APP_CONFIG_FOLDER") RESTORABLE=("$APP_NAME.$FILE_EXTENSION" "$SCRIPT_FILE_NAME" "$APP_NAME.desktop" "$APP_CONFIG_FOLDER")
for RESTORE_ITEM in ${RESTORABLE[@]} ; do for RESTORE_ITEM in ${RESTORABLE[@]} ; do
if [ -d "$RESTORE_ITEM" ] ; then if [ -d "$RESTORE_ITEM" ] ; then
if [ -d "$APP_CONFIG_PATH" ] ; then if [ -d "$APP_CONFIG_PATH" ] ; then
echo " - Folder : $RESTORE_ITEM | already present" >> $TMP/restore_conf echo "APP_CONFIG_PATH=\"$APP_CONFIG_PATH\" FILE_NAME=\"$RESTORE_ITEM\"" >> $TMP/restore_check
echo $RESTORE_ITEM >> $TMP/restore_check
else else
echo " - Folder : $RESTORE_ITEM | not present" >> $TMP/restore_conf echo "APP_CONFIG_PATH=\"$APP_CONFIG_PATH\" FILE_NAME=\"$RESTORE_ITEM\"" >> $TMP/restore_check
echo "APP_CONFIG_PATH=\"$APP_CONFIG_PATH\" FILE_NAME=\"$RESTORE_ITEM\"" >> $TMP/restore_diff
fi fi
elif [ -f "$RESTORE_ITEM" ] ; then elif [ -f "$RESTORE_ITEM" ] ; then
if [[ -f "$INSTALL_PATH/$RESTORE_ITEM" || -f "$SCRIPT_PATH/$RESTORE_ITEM" || -f "$LAUNCHER_PATH/$RESTORE_ITEM" ]] ; then if [[ -f "$INSTALL_PATH/$RESTORE_ITEM" || -f "$SCRIPT_PATH/$RESTORE_ITEM" || -f "$LAUNCHER_PATH/$RESTORE_ITEM" ]] ; then
echo " - File : $RESTORE_ITEM | already present" >> $TMP/restore_conf if [ "$RESTORE_ITEM" == "$APP_NAME.$FILE_EXTENSION" ] ; then
echo "\"$RESTORE_ITEM\"" >> $TMP/restore_check echo "INSTALL_PATH=\"$INSTALL_PATH\" FILE_NAME=\"$RESTORE_ITEM\"" >> $TMP/restore_check
elif [[ "$RESTORE_ITEM" == "$SCRIPT_FILE_NAME" || "$RESTORE_ITEM" == "$AUTO_SCRIPT_FILE_NAME" ]] ; then
echo "SCRIPT_PATH=\"$SCRIPT_PATH\" FILE_NAME=\"$RESTORE_ITEM\"" >> $TMP/restore_check
elif [ "$RESTORE_ITEM" == "$APP_NAME.desktop" ] ; then
echo "LAUNCHER_PATH=\"$LAUNCHER_PATH\" FILE_NAME=\"$RESTORE_ITEM\"" >> $TMP/restore_check
fi
else else
echo " - File : $RESTORE_ITEM | not present" >> $TMP/restore_conf if [ "$RESTORE_ITEM" == "$APP_NAME.$FILE_EXTENSION" ] ; then
echo "INSTALL_PATH=\"$INSTALL_PATH\" FILE_NAME=\"$RESTORE_ITEM\"" >> $TMP/restore_check
echo "INSTALL_PATH=\"$INSTALL_PATH\" FILE_NAME=\"$RESTORE_ITEM\"" >> $TMP/restore_diff
elif [[ "$RESTORE_ITEM" == "$SCRIPT_FILE_NAME" || "$RESTORE_ITEM" == "$AUTO_SCRIPT_FILE_NAME" ]] ; then
echo "SCRIPT_PATH=\"$SCRIPT_PATH\" FILE_NAME=\"$RESTORE_ITEM\"" >> $TMP/restore_check
echo "SCRIPT_PATH=\"$SCRIPT_PATH\" FILE_NAME=\"$RESTORE_ITEM\"" >> $TMP/restore_diff
elif [ "$RESTORE_ITEM" == "$APP_NAME.desktop" ] ; then
echo "LAUNCHER_PATH=\"$LAUNCHER_PATH\" FILE_NAME=\"$RESTORE_ITEM\"" >> $TMP/restore_check
echo "LAUNCHER_PATH=\"$LAUNCHER_PATH\" FILE_NAME=\"$RESTORE_ITEM\"" >> $TMP/restore_diff
fi
fi fi
fi fi
done done
RESTORE_PATH=("INSTALL_PATH" "SCRIPT_PATH" "LAUNCHER_PATH" "APP_CONFIG_PATH") echo -e " - ${CRS}Configuring ${CYN}$BACKUP_TYPE${CRS} restoration process...${CRS}\n"
################################################################################################# i=1
for CHANGED in ${RESTORE_PATH[@]} ; do RESTORE_PATH=$(cat $TMP/restore_check | awk -F'=' '{print $1}')
LOCAL_PATH=$(echo \$$CHANGED)
echo $LOCAL_PATH
if [ "$(cat conf_log | grep $RESTORE_PATH | awk -F '=' '{print $2}')" == "$LOCAL_PATH" ] ; then
echo $(cat conf_log | grep "${CHANGED}_PATH") >> $TMP/restore_path_change
echo "${CHANGED}_PATH"
else for PATH_VARIABLE in ${RESTORE_PATH[@]} ; do
echo "BAD" PATH_CHECK=$(cat $TMP/restore_diff 2> /dev/null| grep "$PATH_VARIABLE" | awk '{print $1}' | awk -F'=' '{print $2}' | tr -d "\"")
echo $(cat conf_log | grep "${CHANGED}_PATH")
if [[ "$PATH_CHECK" == "$INSTALL_PATH" || "$PATH_CHECK" == "$SCRIPT_PATH" || "$PATH_CHECK" == "$LAUNCHER_PATH" || "$PATH_CHECK" == "$APP_CONFIG_PATH" ]] ; then
echo " $i - DEFAULT_$PATH_VARIABLE = $PATH_CHECK" >> $TMP/restore_path_change
echo " BACKUP_$(cat conf_log | grep "$PATH_VARIABLE")" >> $TMP/restore_path_change
echo >> $TMP/restore_path_change
i=$(($i+1))
fi fi
done done
if [ -f "$TMP/restore_path_change" ] ; then
echo -e " ${YEL}Path change detected!\n${CRS}"
echo -e "$(cat $TMP/restore_path_change)\n"
while true ; do
read -p " Which path to use? (DEFAULT/backup) : " PATH_OVERWRITE
echo
if [[ "$PATH_OVERWRITE" == "" || "$PATH_OVERWRITE" == "default" || "$PATH_OVERWRITE" == "DEFAULT" ]] ; then
break
elif [[ "$PATH_OVERWRITE" == "backup" || "$PATH_OVERWRITE" == "BACKUP" ]] ; then
TARGET_TO_CHANGE=$(cat $TMP/restore_diff | awk '{print $1}' | awk -F'=' '{print $1}')
for TARGET_VARIABLE in ${TARGET_TO_CHANGE[@]} ; do
PATH_TO_CHANGE=$(cat conf_log | grep "$TARGET_VARIABLE" | awk -F'=' '{print $2}' | tr -d " ")
if [ "$TARGET_VARIABLE" == "INSTALL_PATH" ] ; then
INSTALL_PATH=$PATH_TO_CHANGE
elif [ "$TARGET_VARIABLE" == "SCRIPT_PATH" ] ; then
SCRIPT_PATH=$PATH_TO_CHANGE
elif [ "$TARGET_VARIABLE" == "LAUNCHER_PATH" ] ; then
LAUNCHER_PATH=$PATH_TO_CHANGE
elif [ "$TARGET_VARIABLE" == "APP_CONFIG_PATH" ] ; then
APP_CONFIG_PATH=$PATH_TO_CHANGE
fi
done
break
else
echo -e " ${YEL}Invalid response!${CRS}\n"
fi
done
fi
for RESTORE_ITEM in ${RESTORABLE[@]} ; do
if [ -d "$RESTORE_ITEM" ] ; then
if [ -d "$APP_CONFIG_PATH" ] ; then
echo -e " - Folder : $RESTORE_ITEM \t| ${RED}directory existing${CRS}" >> $TMP/restore_content
else
echo -e " - Folder : $RESTORE_ITEM \t| ${GRN}not present${CRS}" >> $TMP/restore_content
fi
elif [ -f "$RESTORE_ITEM" ] ; then
if [[ -f "$INSTALL_PATH/$RESTORE_ITEM" || -f "$SCRIPT_PATH/$RESTORE_ITEM" || -f "$LAUNCHER_PATH/$RESTORE_ITEM" ]] ; then
echo -e " - File : $RESTORE_ITEM \t| ${RED}file existing${CRS}" >> $TMP/restore_content
else
echo -e " - File : $RESTORE_ITEM \t| ${GRN}not present${CRS}" >> $TMP/restore_content
fi
fi
done
restore_backup
} }
restore_backup() { restore_backup() {
echo -e " ${LCY}Backup Content Summary${CRS}\n" echo -e "\t${LCY}###### Restore Summary ######${CRS}\n"
echo -e "$(cat $TMP/restore_conf)\n" echo -e " ${MGT}Destination${CRS}"
echo -e " - Install path \t: ${CYN}$INSTALL_PATH${CRS}"
echo -e " - Script path \t: ${CYN}$SCRIPT_PATH${CRS}"
echo -e " - Launcher path \t: ${CYN}$LAUNCHER_PATH${CRS}"
echo -e " - $APP_NAME config \t: ${CYN}$APP_CONFIG_PATH${CRS}\n"
echo -e " ${MGT}Backup content${CRS}"
echo -e "$(cat $TMP/restore_content)\n"
if [ -f "$TMP/restore_check" ] ; then if [ -f "$TMP/restore_check" ] ; then
echo -e " ${RED}WARNING: Some items are existing on your system!${CRS}\n" echo -e " ${RED}WARNING: Some items are existent on your system!${CRS}\n"
while true ; do while true ; do
read -p " Overwrite existing? (y/N) : " RESTORE_OVERWRITE read -p " Overwrite existing? (y/N) : " RESTORE_OVERWRITE
@ -697,10 +792,28 @@ restore_backup() {
break break
elif [[ "$RESTORE_OVERWRITE" == "y" || "$RESTORE_OVERWRITE" == "Y" ]] ; then elif [[ "$RESTORE_OVERWRITE" == "y" || "$RESTORE_OVERWRITE" == "Y" ]] ; then
EXISTING=$(cat $TMP/restore_check) echo -e "\n - ${CRS}Restoring ${CYN}$BACKUP_TYPE${CRS} backup files...${CRS}\n"
EXISTING=$(cat $TMP/restore_check | awk -F'=' '{print $1}')
for REPLACE in ${EXISTING[@]} ; do for REPLACE in ${EXISTING[@]} ; do
rm -rf $REPLACE if [ "$REPLACE" == "INSTALL_PATH" ] ; then
rm -rf $INSTALL_PATH/$APP_NAME.$FILE_EXTENSION
chmod +x $APP_NAME.$FILE_EXTENSION
mv $APP_NAME.$FILE_EXTENSION $INSTALL_PATH
elif [ "$REPLACE" == "SCRIPT_PATH" ] ; then
rm -rf $SCRIPT_PATH/$SCRIPT_FILE_NAME $SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME
chmod +x *.sh
mv *.sh $SCRIPT_PATH
elif [ "$REPLACE" == "LAUNCHER_PATH" ] ; then
rm -rf $LAUNCHER_PATH/$APP_NAME.desktop
mv $APP_NAME.desktop $LAUNCHER_PATH
elif [ "$REPLACE" == "APP_CONFIG_PATH" ] ; then
rm -rf $APP_CONFIG_PATH
mv $APP_CONFIG_FOLDER $HOME/.config
fi
done done
fi fi
done done
@ -712,11 +825,34 @@ restore_backup() {
read -p " Proceed with changes? (Y/n) : " RESTORE_CONFIRM read -p " Proceed with changes? (Y/n) : " RESTORE_CONFIRM
if [[ "$RESTORE_CONFIRM" == "" || "$RESTORE_CONFIRM" == "y" || "$RESTORE_CONFIRM" == "Y" ]] ; then if [[ "$RESTORE_CONFIRM" == "" || "$RESTORE_CONFIRM" == "y" || "$RESTORE_CONFIRM" == "Y" ]] ; then
echo -e " - ${CRS}Copying ${CYN}$BACKUP_TYPE${CRS} backup files...${CRS}\n" echo -e " - ${CRS}Restoring ${CYN}$BACKUP_TYPE${CRS} backup files...${CRS}\n"
for REPLACE in ${EXISTING[@]} ; do
if [ "$REPLACE" == "INSTALL_PATH" ] ; then
rm -rf $INSTALL_PATH/$APP_NAME.$FILE_EXTENSION
chmod +x $APP_NAME.$FILE_EXTENSION
mv $APP_NAME.$FILE_EXTENSION $INSTALL_PATH
elif [ "$REPLACE" == "SCRIPT_PATH" ] ; then
rm -rf $SCRIPT_PATH/$SCRIPT_FILE_NAME $SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME
chmod +x *.sh
mv *.sh $SCRIPT_PATH
elif [ "$REPLACE" == "LAUNCHER_PATH" ] ; then
rm -rf $LAUNCHER_PATH/$APP_NAME.desktop
mv $APP_NAME.desktop $LAUNCHER_PATH
elif [ "$REPLACE" == "APP_CONFIG_PATH" ] ; then
rm -rf $APP_CONFIG_PATH
mv $APP_CONFIG_FOLDER $HOME/.config
fi
elif [[ "$RESTORE_CONFIRM" == "n" || "$RESTORE_CONFIRM" == "N" ]] ; then elif [[ "$RESTORE_CONFIRM" == "n" || "$RESTORE_CONFIRM" == "N" ]] ; then
echo -e "\n ${RED}Cancelled!${CRS}\n" echo -e "\n ${RED}Cancelled!${CRS}\n"
break break
else
echo -e "\n ${YEL}Invalid response!${CRS}\n"
fi fi
done done
fi fi