diff --git a/README.md b/README.md index 66e4c18..19548bb 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ With "little" tinkering it should be possible to apply this script to install, u ``` --- ### First Install -To initally install Helium browser via this script, download helium_helper.sh and make it executable: +To initally install Helium browser via this script, download `helium_helper.sh` and make it executable: ```sh wget https://lab.c95.org/fr4nz/helium-helper/raw/branch/main/helium_helper.sh && chmod +x helium_helper.sh ``` @@ -30,7 +30,7 @@ Run script with install parameter _-i_ ### Updating **From launcher** (if added during install or by running `./helium_helper.sh -l`) -Checking for the latest version and updating can simply be done for the browser as well as the script by right clicking the app icon and choosing either update option, which will be run by `helium_launcher_update.sh`. This will backup all files that are being updated and write a log. +Checking for the latest version and updating can simply be done for the browser as well as the script by right clicking the app icon and choosing either update option, which will be run by `helium_launcher_update.sh`. This will backup all files and configuration and write a log. **Terminal** diff --git a/devdoc.md b/devdoc.md index 17b5150..7a6784c 100644 --- a/devdoc.md +++ b/devdoc.md @@ -43,12 +43,15 @@ - Removal process adjusted - $1 verifier added - Readme updated +--- +- Notification adjusted for KDE & GNOME ## Add/To Do - Roll back from backup - Update Readme - Make functional launcher optional +- Variable transfer script ## Repo - Merge workflow diff --git a/helium_helper.sh b/helium_helper.sh index ec36448..881985b 100755 --- a/helium_helper.sh +++ b/helium_helper.sh @@ -24,13 +24,14 @@ SCRIPT_NAME="$APP_NAME Helper Script" SCRIPT_FILE_NAME="helium_helper.sh" AUTO_SCRIPT_FILE_NAME="helium_launcher_update.sh" SCRIPT_VERSION="0.5.9.1" -ALIAS="update-helium" +ALIAS="helium-helper" DATE=$(date +"%d%m%y") ## LOCATIONS TMP=/tmp/$APP_NAME -INSTALL_PATH=$HOME/.apps/$APP_NAME -APP_CONFIG_PATH=$HOME/.config/net.imput.helium +INSTALL_PATH=$HOME/.apps/$APP_NAME\1 +APP_CONFIG_FOLDER="net.imput.helium" +APP_CONFIG_PATH=$HOME/.config/$APP_CONFIG_FOLDER ASSET_PATH=$INSTALL_PATH/assets BACKUP_PATH=$ASSET_PATH/backup LOG_PATH=$ASSET_PATH/logs @@ -44,9 +45,9 @@ REMOTE_REPO_URL=https://lab.c95.org/fr4nz/helium-helper/raw/branch/$REMOTE_REPO_ REMOTE_SCRIPT_URL=$REMOTE_REPO_URL/$SCRIPT_FILE_NAME APP_SOURCE_URL=https://api.github.com/repos/imputnet/helium-linux/releases/latest -########## FUNCTIONS ########### +########################### FUNCTIONS ############################ -### DEPENDENCIES +#################### DEPENDENCY CHECK #################### cmd_query() { if ! command -v $PACKAGE > /dev/null 2>&1 ; then echo " - $PACKAGE" >> $TMP/missingDeps @@ -63,13 +64,12 @@ dependency_check () { done if [ -f "$TMP/missingDeps" ] ; then - MISSING=$(cat $TMP/missingDeps) - echo -e " ${RED}Following dependencies are missing :\n\n${CRS}$MISSING\n\n ${CYN}Please install and re-run script !${CRS}\n" + echo -e " ${RED}Following dependencies are missing :\n\n${CRS}$(cat $TMP/missingDeps)\n\n ${CYN}Please install and re-run script !${CRS}\n" exit_clean fi } -### SHELL CHECK +#################### SHELL CHECK #################### shell_query() { if [ "$(echo $SHELL | grep "$SHELL_OPTION")" ] ; then ACTIVE_SHELL=$SHELL_OPTION @@ -85,7 +85,7 @@ shell_check() { done } -### ARCH CHECK +#################### ARCH CHECK #################### arch_check() { if [ "$ARCH_OVERRIDE" ] ; then ARCH=$ARCH_OVERRIDE @@ -106,7 +106,7 @@ arch_check() { fi } -### CHECK LOCAL INSTALL +#################### LOCAL INSTALL CHECK #################### local_check() { if ! [ -d "$INSTALL_PATH" ] ; then echo -e "\n ${YEL}$APP_NAME_LONG directory not found!${CRS}\n" @@ -120,7 +120,33 @@ local_check() { fi } -### INSTALL +#################### VARIABLE CHECK #################### +path_correction() { + if [ "$TARGET" == "INSTALL" ] ; then + TARGET_PATH=$INSTALL_PATH + + elif [ "$TARGET" == "BACKUP" ] ; then + TARGET_PATH=$BACKUP_PATH + fi + + if ! [ ${TARGET_PATH:0:1} == "/" ] ; then + TARGET_PATH=$(pwd)/$TARGET_PATH + fi + + REVERSE_PATH=$(echo $TARGET_PATH | rev) + if [ "${REVERSE_PATH:0:1}" == "/" ] ; then + TARGET_PATH=$(echo $TARGET_PATH | sed "s|.$||") + fi + + if [ "$TARGET" == "INSTALL" ] ; then + INSTALL_PATH=$TARGET_PATH + + elif [ "$TARGET" == "BACKUP" ] ; then + BACKUP_PATH=$TARGET_PATH + fi +} + +#################### INSTALL #################### install_application() { if [ -f "$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION" ] ; then echo -e " ${YEL}$APP_NAME_LONG AppImage found! Trying to update...${CRS}" @@ -153,7 +179,7 @@ install_application() { done } -### LAUNCHER +#################### LAUNCHER #################### add_launcher() { if [ -f "$LAUNCHER_PATH/$APP_NAME.desktop" ] ; then echo -e "\n ${YEL}${APP_NAME}.desktop already exists!${CRS}" @@ -206,7 +232,7 @@ add_launcher() { fi } -### ALIAS +#################### ALIAS #################### add_alias() { if ! [ -f "$SCRIPT_PATH/$SCRIPT_FILE_NAME" ] ; then mkdir -p $SCRIPT_PATH @@ -258,18 +284,18 @@ add_alias() { fi } -### UPDATE +#################### UPDATE #################### update_application() { LOCAL_VERSION=$($INSTALL_PATH/$APP_NAME.$FILE_EXTENSION --version | awk '{print $2}') APP_SOURCE_VERSION=$(curl -s $APP_SOURCE_URL | grep "tag_name" | tr -d \", | awk '{print $2}') ### CHECK FOR EMPTY VERSION TAGS if [ -z "$APP_SOURCE_VERSION" ] ; then - echo -e "\n ${RED}Empty version tag from ${CYN}$APP_SOURCE${RED}! Can't compare, exiting...${CRS}" + echo -e "\n ${RED}Empty version tag from ${CYN}$APP_SOURCE${RED}! Can't compare, exiting...${CRS}\n" exit elif [ -z "$LOCAL_VERSION" ] ; then - echo -e "\n ${RED}Empty version tag from ${CYN}local AppImage${RED}! Can't compare, exiting...${CRS}" + echo -e "\n ${RED}Empty version tag from ${CYN}local AppImage${RED}! Can't compare, exiting...${CRS}\n" exit fi @@ -317,9 +343,10 @@ update_application() { fi } -### BACKUP +#################### BACKUP #################### call_backup() { - if [ -f $BACKUP_PATH\/$APP_NAME\.$BACKUP_METHOD\.backup_* ] ; then + BACKUP_COUNT=$(ls $BACKUP_PATH/$APP_NAME.$BACKUP_METHOD.backup_* 2> /dev/null | wc -l) + if [[ "$BACKUP_COUNT" -gt "0" ]] ; then echo -e "\n ${CYN}A $BACKUP_METHOD backup already exists!${CRS}\n" while true ; do @@ -331,20 +358,74 @@ call_backup() { elif [[ "$OVERWRITE_BACKUP" == "y" || "$OVERWRITE_BACKUP" == "Y" ]] ; then echo -e "\n ${YEL}Overwriting backup...${CRS}" - rm $BACKUP_PATH/$APP_NAME.$BACKUP_METHOD.backup_* + rm -rf $BACKUP_PATH/$APP_NAME.$BACKUP_METHOD.backup_* ${BACKUP_METHOD}_backup break else echo -e "\n ${YEL}Invalid response!${CRS}\n" fi - done - - else - ${BACKUP_METHOD}_backup + done + + else + ${BACKUP_METHOD}_backup fi } +backup_logger() { + echo "### $APP_NAME_LONG CONFIG SNAPSHOT $(date) ###" >> $TMP/backup/conf_log + echo >> $TMP/backup/conf_log + echo -e "\n - ${CRS}Creating ${CYN}config log${CRS}...${CRS}" + shell_check + + if [ "$ACTIVE_SHELL" == "zsh" ] ; then + if [ "$(cat $HOME/.zshrc | grep "$ALIAS")" ] ; then + echo " # Shell : $ACTIVE_SHELL" >> $TMP/backup/conf_log + echo " # Alias : TRUE" >> $TMP/backup/conf_log + fi + + elif [ "$ACTIVE_SHELL" == "bash" ] ; then + if [ "$(cat $HOME/.bashrc | grep "$ALIAS")" ] ; then + echo " # Shell : $ACTIVE_SHELL" >> $TMP/backup/conf_log + echo " # Alias : TRUE" >> $TMP/backup/conf_log + fi + + elif [ "$ACTIVE_SHELL" == "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 " # Alias : TRUE" >> $TMP/backup/conf_log + fi + + else + echo " # Shell : $ACTIVE_SHELL" >> $TMP/backup/conf_log + echo " # Alias : FALSE" >> $TMP/backup/conf_log + fi + + LOGGABLE=("$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION" "$SCRIPT_PATH/$SCRIPT_FILE_NAME" "$SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME" "$LAUNCHER_PATH/$APP_NAME.desktop" "$APP_CONFIG_PATH") + + for LOG_ITEM in ${LOGGABLE[@]} ; do + if [ -d "$LOG_ITEM" ] ; then + echo " # Folder : $LOG_ITEM" >> $TMP/backup/conf_log + + elif [ -f "$LOG_ITEM" ] ; then + echo " # File : $LOG_ITEM" >> $TMP/backup/conf_log + + else + echo " # N/A : $LOG_ITEM" >> $TMP/backup/conf_log + fi + done + + echo >> $TMP/backup/conf_log + echo >> $TMP/backup/conf_log + echo "### $SCRIPT_FILE_NAME VARIABLES ###" >> $TMP/backup/conf_log + echo >> $TMP/backup/conf_log + echo "INSTALL_PATH=$INSTALL_PATH" >> $TMP/backup/conf_log + echo "SCRIPT_PATH=$SCRIPT_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 >> $TMP/backup/conf_log +} + backup_file_collector() { for BACKUP_ITEM in ${BACKUPABLE[@]} ; do @@ -353,10 +434,12 @@ backup_file_collector() { cp -r $BACKUP_ITEM $TMP/backup elif [ -f "$BACKUP_ITEM" ] ; then - mkdir -p $TMP/backup + mkdir -p $TMP/backup cp $BACKUP_ITEM $TMP/backup fi done + + backup_logger } script_backup() { @@ -426,9 +509,9 @@ pack_backup() { COMPRESSION_METHOD=("pbzip2" "gzip" "bzip2" "zip") until [ "$BACKUP_COMPRESSION" ] ; do - for COMPRESSION_TYPE in ${COMPRESSION_METHOD[@]} ; do + for COMPRESSION_TYPE in "${COMPRESSION_METHOD[@]}" ; do - if [ "$(command -v $COMPRESSION_TYPE) > /dev/null 2>&1" ] ; then + if command -v $COMPRESSION_TYPE > /dev/null 2>&1 ; then BACKUP_COMPRESSION=$COMPRESSION_TYPE break fi @@ -478,7 +561,170 @@ pack_backup() { fi } -### REMOVE +#################### RESTORE BACKUP #################### +select_backup() { + BACKUP_COUNT=$(ls $BACKUP_PATH/$APP_NAME.$BACKUP_TYPE.backup_* 2> /dev/null | wc -l) + if [ "$BACKUP_COUNT" -gt "1" ] ; then + i=1 + mkdir -p $TMP/backup_restore + CWD=$(pwd) + cd $BACKUP_PATH + RESTORE_OPTIONS=$(ls -lt $APP_NAME\.$BACKUP_TYPE\.backup_* | awk '{print $9}') + + for RESTORE_TARGET in ${RESTORE_OPTIONS[@]} ; do + echo " $i - $RESTORE_TARGET" >> $TMP/backup_restore/options + i=$(($i+1)) + done + + cd $CWD + echo -e "\n ${CYN}Choose one of the $BACKUP_COUNT options below${CRS}\n" + echo -e "$(cat $TMP/backup_restore/options)\n" + + while true ; do + read -p " Enter backup ID (1-$BACKUP_COUNT) or exit : " RESTORE_SELECT + + if [[ "$RESTORE_SELECT" -le "$BACKUP_COUNT" && "$RESTORE_SELECT" -gt "0" ]] ; then + RESTORE_FILE=$(sed -n $RESTORE_SELECT\p $TMP/backup_restore/options | awk '{print $3}') + BACKUP_TYPE=$(echo $RESTORE_FILE | awk -F'.' '{print $2}') + RESTORE_SOURCE=$BACKUP_PATH/$RESTORE_FILE + break + + elif [[ "$RESTORE_SELECT" == "exit" || "$RESTORE_SELECT" == "EXIT" ]] ; then + echo + exit_clean + + else + echo -e "\n ${YEL}Invalid response!${CRS}\n" + fi + done + + elif [ "$BACKUP_COUNT" -lt "1" ] ; then + echo -e " ${RED}No backup archive found in ${CYN}$BACKUP_PATH${RED}!${CRS}\n" + exit_clean + + else + RESTORE_SOURCE=$(ls $BACKUP_PATH/$APP_NAME.$BACKUP_TYPE.backup_*) + RESTORE_FILE=$(echo $RESTORE_SOURCE | rev | awk -F'/' '{print $1}' | rev) + + if [ "$BACKUP_TYPE" == "*" ] ; then + BACKUP_TYPE=$(file $RESTORE_SOURCE | awk '{print $1}' | awk -F'.' '{print $2}') + fi + fi + + BACKUP_COMPRESSION=$(file $RESTORE_SOURCE | awk '{print $2}') + decompress_backup + configure_restore + restore_backup +} + +decompress_backup() { + CWD=$(pwd) + mkdir -p $TMP/backup_restore + cd $TMP/backup_restore + echo -e "\n - ${CRS}Decompressing backup archive ${CYN}$RESTORE_FILE${CRS}...${CRS}\n" + cp $RESTORE_SOURCE . + + if [ "$BACKUP_COMPRESSION" == "bzip2" ] ; then + tar -xjf $APP_NAME.*.backup_*.tar.bz2 + rm $APP_NAME.*.backup_*.tar.bz2 + + elif [ "$BACKUP_COMPRESSION" == "gzip" ] ; then + tar -xzf $APP_NAME.*.backup_*.tar.gz + rm $APP_NAME.*.backup_*.tar.gz + + elif [ "$BACKUP_COMPRESSION" == "zip" ] ; then + unzip $APP_NAME.*.backup_*.tar.zip + tar -xf $APP_NAME.*.backup_*.tar + rm $APP_NAME.*.backup_*.tar.zip $APP_NAME.*.backup_*.tar.zip + + else + echo -e " ${YEL}TBA...${CRS}\n" ####################################################################### + fi +} + +configure_restore() { + 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") + + for RESTORE_ITEM in ${RESTORABLE[@]} ; do + if [ -d "$RESTORE_ITEM" ] ; then + if [ -d "$APP_CONFIG_PATH" ] ; then + echo " - Folder : $RESTORE_ITEM | already present" >> $TMP/restore_conf + echo $RESTORE_ITEM >> $TMP/restore_check + + else + echo " - Folder : $RESTORE_ITEM | not present" >> $TMP/restore_conf + fi + + elif [ -f "$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 + echo "\"$RESTORE_ITEM\"" >> $TMP/restore_check + + else + echo " - File : $RESTORE_ITEM | not present" >> $TMP/restore_conf + fi + fi + done + + RESTORE_PATH=("INSTALL_PATH" "SCRIPT_PATH" "LAUNCHER_PATH" "APP_CONFIG_PATH") + ################################################################################################# + for CHANGED in ${RESTORE_PATH[@]} ; do + 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 + echo "BAD" + echo $(cat conf_log | grep "${CHANGED}_PATH") + fi + done +} + +restore_backup() { + echo -e " ${LCY}Backup Content Summary${CRS}\n" + echo -e "$(cat $TMP/restore_conf)\n" + + if [ -f "$TMP/restore_check" ] ; then + echo -e " ${RED}WARNING: Some items are existing on your system!${CRS}\n" + + while true ; do + read -p " Overwrite existing? (y/N) : " RESTORE_OVERWRITE + + if [[ "$RESTORE_OVERWRITE" == "" || "$RESTORE_OVERWRITE" == "n" || "$RESTORE_OVERWRITE" == "N" ]] ; then + echo -e "\n ${RED}Cancelled!${CRS}\n" + break + + elif [[ "$RESTORE_OVERWRITE" == "y" || "$RESTORE_OVERWRITE" == "Y" ]] ; then + EXISTING=$(cat $TMP/restore_check) + + for REPLACE in ${EXISTING[@]} ; do + rm -rf $REPLACE + done + fi + done + + else + echo -e " ${CYN}The content above is about to be restored...${CRS}\n" + + while true ; do + read -p " Proceed with changes? (Y/n) : " RESTORE_CONFIRM + + if [[ "$RESTORE_CONFIRM" == "" || "$RESTORE_CONFIRM" == "y" || "$RESTORE_CONFIRM" == "Y" ]] ; then + echo -e " - ${CRS}Copying ${CYN}$BACKUP_TYPE${CRS} backup files...${CRS}\n" + + elif [[ "$RESTORE_CONFIRM" == "n" || "$RESTORE_CONFIRM" == "N" ]] ; then + echo -e "\n ${RED}Cancelled!${CRS}\n" + break + fi + done + fi +} + +#################### REMOVE #################### remove_application() { if [ -d "$INSTALL_PATH" ] ; then @@ -523,11 +769,11 @@ remove_application() { break elif [[ "$CONFIRM_REMOVE" == "n" || "$CONFIRM_REMOVE" == "N" ]] ; then - echo -e " ${RED}Cancelled!${CRS}" + echo -e "\n ${RED}Cancelled!${CRS}" exit else - echo -e " ${YEL}Invalid response!${CRS}\n" + echo -e "\n ${YEL}Invalid response!${CRS}\n" fi done @@ -537,12 +783,12 @@ remove_application() { fi } -### SCRIPT VERSION +#################### SCRIPT VERSION #################### script_version() { echo -e "\n ${CYN}$APP_NAME_LONG Helper Script Version : ${CRS}$SCRIPT_VERSION\n" } -### UPDATE SCRIPT +#################### UPDATE SCRIPT #################### scrip_version_info() { echo -e " - ${CYN}Local Version :\t${CRS}$SCRIPT_VERSION" echo -e " - ${CYN}Remote Version :\t${CRS}$REMOTE_SCRIPT_VERSION" @@ -558,13 +804,12 @@ update_script() { read -p " Copy script to $SCRIPT_PATH? (Y/n) : " CONFIRM_SCRIPT_INSTALL if [[ "$CONFIRM_SCRIPT_INSTALL" == "" || "$CONFIRM_SCRIPT_INSTALL" == "y" || "$CONFIRM_SCRIPT_INSTALL" == "Y" ]] ; then - mkdir -p $SCRIPT_PATH - mkdir -p $TMP + mkdir -p $SCRIPT_PATH $TMP wget -P $TMP $REMOTE_SCRIPT_URL -q wget -P $TMP $REMOTE_REPO_URL/$AUTO_SCRIPT_FILE_NAME -q chmod +x $TMP/$SCRIPT_FILE_NAME $TMP/$AUTO_SCRIPT_FILE_NAME mv $TMP/$SCRIPT_FILE_NAME $TMP/$AUTO_SCRIPT_FILE_NAME $SCRIPT_PATH - echo -e "\n ${GRN}$SCRIPT_FILE_NAME is up-to-date!${CRS}" + echo -e "\n ${GRN}$SCRIPT_FILE_NAME is up-to-date!${CRS}\n" break elif [[ "$CONFIRM_SCRIPT_INSTALL" == "n" || "$CONFIRM_SCRIPT_INSTALL" == "N" ]] ; then @@ -581,11 +826,11 @@ update_script() { ### CHECK FOR EMPTY VERSION TAGS if [ -z "$SCRIPT_VERSION" ] ; then - echo -e "\n ${RED}Empty version tag from ${CYN}local script${RED}! Can't compare, exiting...${CRS}" + echo -e "\n ${RED}Empty version tag from ${CYN}local script${RED}! Can't compare, exiting...${CRS}\n" exit elif [ -z "$REMOTE_SCRIPT_VERSION" ] ; then - echo -e "\n ${RED}Empty version tag from ${CYN}remote script${RED}! Can't compare, exiting...${CRS}" + echo -e "\n ${RED}Empty version tag from ${CYN}remote script${RED}! Can't compare, exiting...${CRS}\n" exit fi @@ -602,7 +847,6 @@ update_script() { while true ; do read -p " Update $SCRIPT_FILE_NAME? (Y/n) : " CONFIRM_SCRIPT_UPDATE - echo if [[ "$CONFIRM_SCRIPT_UPDATE" == "" || "$CONFIRM_SCRIPT_UPDATE" == "y" || "$CONFIRM_SCRIPT_UPDATE" == "Y" ]] ; then if ! [ -d "$BACKUP_PATH" ] ; then @@ -618,11 +862,11 @@ update_script() { break elif [[ "$CONFIRM_SCRIPT_UPDATE" == "n" || "$CONFIRM_SCRIPT_UPDATE" == "N" ]] ; then - echo -e " ${RED}Cancelled!${CRS}\n" + echo -e "\n ${RED}Cancelled!${CRS}\n" break else - echo -e " ${YEL}Invalid response!${CRS}\n" + echo -e "\n ${YEL}Invalid response!${CRS}\n" fi done @@ -633,7 +877,7 @@ update_script() { fi } -### COMPARE APP VERSION +#################### COMPARE APP VERSION #################### app_version_info() { echo -e " - ${CYN}Local Version :\t${CRS}$LOCAL_VERSION" echo -e " - ${CYN}$APP_SOURCE Version :\t${CRS}$APP_SOURCE_VERSION\n" @@ -669,17 +913,18 @@ compare_version() { fi } -### HELP +#################### HELP #################### help() { echo -e "\n${LCY}${SCRIPT_NAME}${CRS}\n" echo -e "$APP_NAME_LONG installer & updater script\n" - echo -e "Syntax: $SCRIPT_FILE_NAME [ -i | -l | -a | -u | -b | -r | -c | -s | -S | -h ]\n" + echo -e "Syntax: $SCRIPT_FILE_NAME [ -i | -l | -a | -u | -b | -B | -r | -c | -s | -S | -h ]\n" echo -e "Options:\n" echo -e "\t-i\tInstall $APP_NAME_LONG from $APP_SOURCE" echo -e "\t-l\tCreate desktop launcher" echo -e "\t-a\tCreate alias for $SCRIPT_FILE_NAME" echo -e "\t-u\tUpdate $APP_NAME_LONG from $APP_SOURCE" echo -e "\t-b\tBackup $APP_NAME_LONG & configuration" + echo -e "\t-B\tRestore $APP_NAME_LONG & configuration from backup" echo -e "\t-r\tRemove $APP_NAME_LONG" echo -e "\t-c\tCompare local to remote version" echo -e "\t-s\tShow script version" @@ -691,7 +936,7 @@ help() { echo -e "\t${CYN}${SCRIPT_PATH}${CRS}\t\t\tScript location\n" } -### EXIT CLEAN +#################### EXIT CLEAN #################### exit_clean() { if [ -d "$TMP" ] ; then rm -rf $TMP @@ -700,10 +945,9 @@ exit_clean() { exit } -########## MAIN ########## +########################### MAIN ########################### -## GET OPTIONS -while getopts ":i,:l,:a,:u,:b,:r,:c,:s,:S,:h" OPTION ; do +while getopts ":i,:l,:a,:u,:b,:B,:r,:c,:s,:S,:h" OPTION ; do if [ "$(echo $1 | wc -m)" -gt "3" ] ; then echo -e "\n${YEL}Option ${RED}$1${YEL} not valid! Use only one parameter at a time...${CRS}" @@ -713,6 +957,7 @@ while getopts ":i,:l,:a,:u,:b,:r,:c,:s,:S,:h" OPTION ; do case $OPTION in i) + TARGET="INSTALL" echo -e "\n ${YEL}Installing $APP_NAME_LONG...${CRS}\n" if [ "$#" -gt "1" ] ; then ALL_PARAMETER=$@ @@ -725,6 +970,7 @@ while getopts ":i,:l,:a,:u,:b,:r,:c,:s,:S,:h" OPTION ; do fi dependency_check arch_check + path_correction install_application exit_clean ;; @@ -759,6 +1005,7 @@ while getopts ":i,:l,:a,:u,:b,:r,:c,:s,:S,:h" OPTION ; do exit_clean ;; b) + TARGET="BACKUP" echo -e "\n ${YEL}Backing up $APP_NAME_LONG...${CRS}" if [ "$#" -gt "1" ] ; then ALL_PARAMETER=$@ @@ -770,13 +1017,41 @@ while getopts ":i,:l,:a,:u,:b,:r,:c,:s,:S,:h" OPTION ; do elif [[ "$PARAMETER" == "pbzip2" || "$PARAMETER" == "gzip" || "$PARAMETER" == "bzip2" || "$PARAMETER" == "zip" ]] ; then BACKUP_COMPRESSION_OVERRIDE=$PARAMETER - elif [ -d "$PARAMETER" ] ; then + elif [[ -d "$PARAMETER" || -d "$(pwd)/$PARAMETER" ]] ; then BACKUP_PATH=$PARAMETER fi done fi + path_correction call_backup - exit ;; + exit_clean ;; + + B) + TARGET="BACKUP" + echo -e "\n ${YEL}Restoring $APP_NAME_LONG from backup...${CRS}" + if [ "$#" -gt "1" ] ; then + ALL_PARAMETER=$@ + + for PARAMETER in ${ALL_PARAMETER[@]} ; do + if [[ "$PARAMETER" == "script" || "$PARAMETER" == "config" || "$PARAMETER" == "app" || "$PARAMETER" == "full" ]] ; then + BACKUP_TYPE=$PARAMETER + + elif [[ -d $PARAMETER || -d $(pwd)/$PARAMETER ]] ; then + BACKUP_PATH=$PARAMETER + + else + BACKUP_TYPE=* + fi + done + + else + BACKUP_TYPE=* + + fi + dependency_check + path_correction + select_backup + exit_clean ;; r) echo -e "\n ${YEL}Removing $APP_NAME_LONG...${CRS}\n" diff --git a/helium_launcher_update.sh b/helium_launcher_update.sh index a1fb03b..0f2d1c2 100755 --- a/helium_launcher_update.sh +++ b/helium_launcher_update.sh @@ -9,7 +9,6 @@ APP_NAME_LONG="Helium Web Browser" ARCH="x86_64" FILE_EXTENSION="AppImage" APP_SOURCE="GitHub" -NOTIFY_NAME="Helium Helper" SCRIPT_NAME="$APP_NAME Launcher Updater" PARENT_SCRIPT_FILE_NAME="helium_helper.sh" SCRIPT_FILE_NAME="helium_launcher_update.sh" @@ -17,6 +16,9 @@ SCRIPT_VERSION="0.5.9.1" LOG_DATE=$(date) DATE=$(date +"%d%m%y") +## NOTIFICATIONS +NOTIFY_NAME="Helium Helper" + ## LOCATIONS TMP=/tmp/$APP_NAME INSTALL_PATH=$HOME/.apps/$APP_NAME @@ -87,6 +89,15 @@ dependency_check () { } +### DE CHECK +desktop_environment() { + ALTERNATIVE_NOTIFY="--app-name="$NOTIFY_NAME"" + + if [[ "$(echo $XDG_CURRENT_DESKTOP | grep -iF "kde")" || "$(echo $XDG_CURRENT_DESKTOP | grep -iF "gnome")" ]] ; then + NOTIFY_NAME=$ALTERNATIVE_NOTIFY + fi +} + ### BACKUP backup_helium() { if [[ -d "$INSTALL_PATH" || -d "$SCRIPT_PATH" || -d $APP_CONFIG_PATH ]] ; then @@ -154,13 +165,13 @@ backup_helium() { cd $TMP && rm -rf backup else - echo "$LOG_DATE | Backup - Backup (uncompressed) written to $BACKUP_PATH" >> $LOG + echo "$LOG_DATE | Backup (uncompressed) written to $BACKUP_PATH" >> $LOG mkdir -p $BACKUP_PATH mv $TMP/backup $BACKUP_PATH/$APP_NAME.auto_backup_$DATE cd $TMP && rm -rf backup fi - echo "$LOG_DATE | Backup - Backup (compressed $BACKUP_COMPRESSION archive) written to $BACKUP_PATH" >> $LOG + echo "$LOG_DATE | Backup (compressed $BACKUP_COMPRESSION archive) written to $BACKUP_PATH" >> $LOG notify-send --icon="$ICON" "$NOTIFY_NAME" "Backup created" cd $CWD fi @@ -353,6 +364,9 @@ done ## DEPENDENCY CHECK dependency_check +## DE CHECK +desktop_environment + ## UPDATE update_helium