diff --git a/.gitignore b/.gitignore old mode 100755 new mode 100644 index ba7230e..81e676c --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ test.sh +devdoc.md binaries \ No newline at end of file diff --git a/README.md b/README.md old mode 100755 new mode 100644 index 9de4490..b3bc10e --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Helium Browser installer & updater +# Helium Bowser installer & updater ## Purpose This script was initially designed to just update my Helium browser but over time and interest it got more functional and universal. It includes functions to install, update, remove, add launcher, etc... It's supposed to run in user space and is (Linux) distro independent I suppose. @@ -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 and configuration 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 that are being updated and write a log. **Terminal** @@ -80,7 +80,7 @@ Backing up, by default, pulls all important files, folders & configuration and c ### Helium_Launcher_Update.sh - Update Helium from launcher - Assumes: - - Presence of `$HOME/.apps/Helium` when updating | changeable in line 21 `INSTALL_PATH` + - Presence of `$HOME/.apps/Helium` when updating | changeable in line 22 `INSTALL_PATH` - Executable named `Helium.AppImage` - Loggs to `$HOME/.apps/Helium/assets/logs` - Keeps backup archives from diff --git a/assets/icon/helium.png b/assets/icon/helium.png old mode 100755 new mode 100644 diff --git a/assets/launcher/helium.desktop.template b/assets/launcher/helium.desktop.template old mode 100755 new mode 100644 diff --git a/assets/workflow/merge.yml b/assets/workflow/merge.yml old mode 100755 new mode 100644 diff --git a/devdoc.md b/devdoc.md deleted file mode 100755 index 35577c5..0000000 --- a/devdoc.md +++ /dev/null @@ -1,104 +0,0 @@ -# To Do List Helium installer - -## Last Jobs -- Readme updated -- Desktop Entry updater --> Complete -- Launcher has an update option now -- Launcher installer refined -- Clean Up ---- -- Script updater - - Remote script check simplified -- Remover function extended - - Alias remover added - - Script remover added -- helium_auto_update.sh renamed to helium_launcher_update.sh -- Desktop notifications added -- Launcher functions extended - - Update script option added - - Show log option added -- Variables universalized -- Wiki created ---- -- sed command fixed in remover -- ARCH variable added -- APP_SOURCE variable changed -- BRANCH variable added -- FILE_EXTENSION variable added -- Readme updated -- Documentation/Wiki updated ---- -- Shell detection added -- Alias support for fish added -- Removal process refined and adapted to fish -- Browser config backup ---- -- Arch detection working -- Clean Up -- Copy Paste mistake fixed -- Backup process rewritten - - Custom backup method to pass as argument - - Custom backup path to pass as argument - - Default if left blank -- Removal process adjusted -- $1 verifier added -- Readme updated ---- -- Notification adjusted for KDE & GNOME -- Backup compression to pass as argument -- Restoration process added --> partially - - Backup selector works - - Backup decompression works - - Restoration config generator --> incomplete - - Restoration function --> incomlete -- Alias changed to "helium-helper" - -## Add/To Do -- Roll back from backup -- Update Readme -- Make functional launcher optional -- Variable transfer script - -## Repo -- Merge workflow - - Convert URLs from __main__ to __stable__ - - Remove to do list - - Remove comment from script - -## Fix - -## Notes - -- Auto Update -```sh -while true ; do - read -p " Enable automatic update check on login? (y/N) : " AUTO_UPDATE - - if [[ "$AUTO_UPDATE" == "" || "$AUTO_UPDATE" == "n" || "$AUTO_UPDATE" == "N" ]] ; then - break - - elif [[ "$AUTO_UPDATE" == "y" || "$AUTO_UPDATE" == "Y" ]] ; then - if ! [ -f "$PROFILE" ] ; then - echo -e "\n ${RED}Following file is missing :\n\n${YEL}$PROFILE\n\n ${CYN}Please investigate and re-run script !${CRS}" - exit 1 - - else - wget -P $TMP https://lab.c95.org/fr4nz/shell-scripts/src/branch/main/helium-browser/helium_auto_update.sh -q --show-progress - chmod +x $TMP/helium_auto_update.sh - mv $TMP/helium_auto_update.sh $INSTALL_PATH/helium_auto_update.sh - echo >> $PROFILE - echo "### HELIUM AUTO UPDATE ###" >> $PROFILE - echo "${INSTALL_PATH}/helium_auto_update.sh" >> $PROFILE - echo >> $PROFILE - echo -e "\n ${GRN}Automatic updates enabled ! ${CRS}\n" - break - - fi - - else - echo -e " ${YEL}Invalid response !${CRS}\n" - - fi - -done -``` diff --git a/helium_helper.sh b/helium_helper.sh index 32c5bf8..24fc04b 100755 --- a/helium_helper.sh +++ b/helium_helper.sh @@ -5,7 +5,6 @@ set -e ## SOME COLOR CYN="\e[0;36m" -MGT="\e[0;35m" YEL="\e[0;33m" RED="\e[0;31m" GRN="\e[0;32m" @@ -25,32 +24,31 @@ 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="helium-helper" +ALIAS="update-helium" DATE=$(date +"%d%m%y") ## LOCATIONS TMP=/tmp/$APP_NAME -INSTALL_PATH=$HOME/.apps/$APP_NAME\1 -APP_CONFIG_FOLDER="net.imput.helium" -APP_CONFIG_PATH=$HOME/.config/$APP_CONFIG_FOLDER +INSTALL_PATH=$HOME/.apps/$APP_NAME +APP_CONFIG_PATH=$HOME/.config/net.imput.helium ASSET_PATH=$INSTALL_PATH/assets BACKUP_PATH=$ASSET_PATH/backup LOG_PATH=$ASSET_PATH/logs LOG=$LOG_PATH/log -LAUNCHER_PATH=$HOME/.local/share/applications1 -SCRIPT_PATH=$HOME/.local/bin1 +LAUNCHER_PATH=$HOME/.local/share/applications +SCRIPT_PATH=$HOME/.local/bin ## REMOTE LOCATIONS -REMOTE_REPO_BRANCH="main" +REMOTE_REPO_BRANCH="stable" REMOTE_REPO_URL=https://lab.c95.org/fr4nz/helium-helper/raw/branch/$REMOTE_REPO_BRANCH REMOTE_SCRIPT_URL=$REMOTE_REPO_URL/$SCRIPT_FILE_NAME APP_SOURCE_URL=https://api.github.com/repos/imputnet/helium-linux/releases/latest -########################### FUNCTIONS ############################ +########## FUNCTIONS ########### -#################### DEPENDENCY CHECK #################### +### DEPENDENCIES cmd_query() { - if ! command -v $PACKAGE > /dev/null 2>&1 ; then + if ! command -v $PACKAGE > /dev/null 2>&1 ; then echo " - $PACKAGE" >> $TMP/missingDeps fi } @@ -65,27 +63,29 @@ dependency_check () { done if [ -f "$TMP/missingDeps" ] ; then - echo -e " ${RED}Following dependencies are missing :\n\n${CRS}$(cat $TMP/missingDeps)\n\n ${CYN}Please install and re-run script !${CRS}\n" + 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" exit_clean fi } -#################### SHELL CHECK #################### +### SHELL CHECK shell_query() { if [ "$(echo $SHELL | grep "$SHELL_OPTION")" ] ; then ACTIVE_SHELL=$SHELL_OPTION - fi + fi + } shell_check() { SHELLS=("bash" "fish" "zsh") - for SHELL_OPTION in ${SHELLS[@]} ; do + for SHELL_OPTION in "${SHELLS[@]}" ; do shell_query "$SHELL_OPTION" done } -#################### ARCH CHECK #################### +### ARCH CHECK arch_check() { if [ "$ARCH_OVERRIDE" ] ; then ARCH=$ARCH_OVERRIDE @@ -106,7 +106,7 @@ arch_check() { fi } -#################### LOCAL INSTALL CHECK #################### +### CHECK LOCAL INSTALL local_check() { if ! [ -d "$INSTALL_PATH" ] ; then echo -e "\n ${YEL}$APP_NAME_LONG directory not found!${CRS}\n" @@ -120,33 +120,7 @@ local_check() { fi } -#################### 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 install_application() { if [ -f "$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION" ] ; then echo -e " ${YEL}$APP_NAME_LONG AppImage found! Trying to update...${CRS}" @@ -179,7 +153,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}" @@ -232,7 +206,7 @@ add_launcher() { fi } -#################### ALIAS #################### +### ALIAS add_alias() { if ! [ -f "$SCRIPT_PATH/$SCRIPT_FILE_NAME" ] ; then mkdir -p $SCRIPT_PATH @@ -284,31 +258,29 @@ 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}\n" + echo -e "\n ${RED}Empty version tag from ${CYN}$APP_SOURCE${RED}! Can't compare, exiting...${CRS}" exit elif [ -z "$LOCAL_VERSION" ] ; then - echo -e "\n ${RED}Empty version tag from ${CYN}local $FILE_EXTENSION${RED}! Can't compare, exiting...${CRS}\n" + echo -e "\n ${RED}Empty version tag from ${CYN}local AppImage${RED}! Can't compare, exiting...${CRS}" exit fi ### COMPARE LOCAL & REMOTE VERSION LOCAL_VERSION_NUM=$(echo $LOCAL_VERSION | tr -d .) APP_SOURCE_VERSION_NUM=$(echo $APP_SOURCE_VERSION | tr -d .) - APP_SOURCE_VERSION_NUM=$(echo "1.$APP_SOURCE_VERSION_NUM") - LOCAL_VERSION_NUM=$(echo "1.$LOCAL_VERSION_NUM") if [ "$APP_SOURCE_VERSION" == "$LOCAL_VERSION" ] ; then echo -e "\n ${GRN}$APP_NAME_LONG is already up-to-date!${CRS}\n" - elif [ $(echo "$APP_SOURCE_VERSION_NUM > $LOCAL_VERSION_NUM" | bc -l) -eq 1 ] ; then + elif [ "$APP_SOURCE_VERSION_NUM" -gt "$LOCAL_VERSION_NUM" ] ; then echo -e "\n ${LCY}$APP_NAME_LONG is updatable!${CRS}\n" app_version_info @@ -345,10 +317,9 @@ update_application() { fi } -#################### BACKUP #################### +### BACKUP call_backup() { - BACKUP_COUNT=$(ls $BACKUP_PATH/$APP_NAME.$BACKUP_METHOD.backup_* 2> /dev/null | wc -l) - if [[ "$BACKUP_COUNT" -gt "0" ]] ; then + if [ -f $BACKUP_PATH\/$APP_NAME\.$BACKUP_METHOD\.backup_* ] ; then echo -e "\n ${CYN}A $BACKUP_METHOD backup already exists!${CRS}\n" while true ; do @@ -356,86 +327,22 @@ call_backup() { if [[ "$OVERWRITE_BACKUP" == "" || "$OVERWRITE_BACKUP" == "n" || "$OVERWRITE_BACKUP" == "N" ]] ; then echo -e "\n ${YEL}Skipping backup process...${CRS}\n" - exit_clean + break elif [[ "$OVERWRITE_BACKUP" == "y" || "$OVERWRITE_BACKUP" == "Y" ]] ; then echo -e "\n ${YEL}Overwriting backup...${CRS}" rm $BACKUP_PATH/$APP_NAME.$BACKUP_METHOD.backup_* + ${BACKUP_METHOD}_backup break else echo -e "\n ${YEL}Invalid response!${CRS}\n" fi - done + done + + else + ${BACKUP_METHOD}_backup fi - - ${BACKUP_METHOD}_backup -} - -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 - - elif ! [ "$(cat $HOME/.zshrc | grep "$ALIAS")" ] ; then - echo " # Shell : $ACTIVE_SHELL" >> $TMP/backup/conf_log - echo " # Alias : FALSE" >> $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 - - elif ! [ "$(cat $HOME/.bashrc | grep "$ALIAS")" ] ; then - echo " # Shell : $ACTIVE_SHELL" >> $TMP/backup/conf_log - echo " # Alias : FALSE" >> $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 - - 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 - - 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() { @@ -446,12 +353,10 @@ 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() { @@ -462,7 +367,7 @@ script_backup() { pack_backup else - echo -e "\n ${YEL}Nothing to back up...${CRS}\n" + echo -e " ${YEL}Nothing to back up...${CRS}" fi } @@ -474,7 +379,7 @@ app_backup() { pack_backup else - echo -e "\n ${YEL}Nothing to back up...${CRS}\n" + echo -e " ${YEL}Nothing to back up...${CRS}" fi } @@ -486,7 +391,7 @@ config_backup() { pack_backup else - echo -e "\n ${YEL}Nothing to back up...${CRS}\n" + echo -e " ${YEL}Nothing to back up...${CRS}" fi } @@ -498,7 +403,7 @@ full_backup() { pack_backup else - echo -e "\n ${YEL}Nothing to back up...${CRS}\n" + echo -e " ${YEL}Nothing to back up...${CRS}" fi } @@ -521,9 +426,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 @@ -573,295 +478,7 @@ pack_backup() { fi } -#################### 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 -} - -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 > /dev/null 2>&1 - tar -xf $APP_NAME.*.backup_*.tar - rm $APP_NAME.*.backup_*.tar.zip $APP_NAME.*.backup_*.tar - - else - echo -e " ${YEL}TBA...${CRS}\n" ####################################################################### - fi - - configure_restore -} - -configure_restore() { - echo -e " - ${CRS}Analysing ${CYN}$BACKUP_TYPE${CRS} backup content...${CRS}\n" - - RESTORABLE=("$APP_NAME.$FILE_EXTENSION" "$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 "APP_CONFIG_PATH=\"$APP_CONFIG_PATH\" FILE_NAME=\"$RESTORE_ITEM\"" >> $TMP/restore_check - - else - 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 - - elif [ -f "$RESTORE_ITEM" ] ; then - if [[ -f "$INSTALL_PATH/$RESTORE_ITEM" || -f "$SCRIPT_PATH/$RESTORE_ITEM" || -f "$LAUNCHER_PATH/$RESTORE_ITEM" ]] ; then - if [ "$RESTORE_ITEM" == "$APP_NAME.$FILE_EXTENSION" ] ; then - 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 - 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 - done - - echo -e " - ${CRS}Configuring ${CYN}$BACKUP_TYPE${CRS} restoration process...${CRS}\n" - i=1 - RESTORE_PATH=$(cat $TMP/restore_check | awk -F'=' '{print $1}') - - for PATH_VARIABLE in ${RESTORE_PATH[@]} ; do - PATH_CHECK=$(cat $TMP/restore_diff 2> /dev/null| grep "$PATH_VARIABLE" | awk '{print $1}' | awk -F'=' '{print $2}' | tr -d "\"") - - 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 - 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() { ############################################### - echo -e "\t${LCY}###### Restore Summary ######${CRS}\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 - echo -e " ${RED}WARNING: Some items are existent 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 - 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 - 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 - 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}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 - done - - elif [[ "$RESTORE_CONFIRM" == "n" || "$RESTORE_CONFIRM" == "N" ]] ; then - echo -e "\n ${RED}Cancelled!${CRS}\n" - break - - else - echo -e "\n ${YEL}Invalid response!${CRS}\n" - fi - done - fi -} - -#################### REMOVE #################### +### REMOVE remove_application() { if [ -d "$INSTALL_PATH" ] ; then @@ -906,11 +523,11 @@ remove_application() { break elif [[ "$CONFIRM_REMOVE" == "n" || "$CONFIRM_REMOVE" == "N" ]] ; then - echo -e "\n ${RED}Cancelled!${CRS}" + echo -e " ${RED}Cancelled!${CRS}" exit else - echo -e "\n ${YEL}Invalid response!${CRS}\n" + echo -e " ${YEL}Invalid response!${CRS}\n" fi done @@ -920,12 +537,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" @@ -941,12 +558,13 @@ 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 $TMP + mkdir -p $SCRIPT_PATH + mkdir -p $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}\n" + echo -e "\n ${GRN}$SCRIPT_FILE_NAME is up-to-date!${CRS}" break elif [[ "$CONFIRM_SCRIPT_INSTALL" == "n" || "$CONFIRM_SCRIPT_INSTALL" == "N" ]] ; then @@ -963,11 +581,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}\n" + echo -e "\n ${RED}Empty version tag from ${CYN}local script${RED}! Can't compare, exiting...${CRS}" exit elif [ -z "$REMOTE_SCRIPT_VERSION" ] ; then - echo -e "\n ${RED}Empty version tag from ${CYN}remote script${RED}! Can't compare, exiting...${CRS}\n" + echo -e "\n ${RED}Empty version tag from ${CYN}remote script${RED}! Can't compare, exiting...${CRS}" exit fi @@ -984,6 +602,7 @@ 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 @@ -999,11 +618,11 @@ update_script() { break elif [[ "$CONFIRM_SCRIPT_UPDATE" == "n" || "$CONFIRM_SCRIPT_UPDATE" == "N" ]] ; then - echo -e "\n ${RED}Cancelled!${CRS}\n" + echo -e " ${RED}Cancelled!${CRS}\n" break else - echo -e "\n ${YEL}Invalid response!${CRS}\n" + echo -e " ${YEL}Invalid response!${CRS}\n" fi done @@ -1014,7 +633,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" @@ -1050,18 +669,17 @@ 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 | -B | -r | -c | -s | -S | -h ]\n" + echo -e "Syntax: $SCRIPT_FILE_NAME [ -i | -l | -a | -u | -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" @@ -1073,7 +691,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 @@ -1082,9 +700,10 @@ exit_clean() { exit } -########################### MAIN ########################### +########## MAIN ########## -while getopts ":i,:l,:a,:u,:b,:B,:r,:c,:s,:S,:h" OPTION ; do +## GET OPTIONS +while getopts ":i,:l,:a,:u,: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}" @@ -1094,7 +713,6 @@ while getopts ":i,:l,:a,:u,:b,: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=$@ @@ -1107,7 +725,6 @@ while getopts ":i,:l,:a,:u,:b,:B,:r,:c,:s,:S,:h" OPTION ; do fi dependency_check arch_check - path_correction install_application exit_clean ;; @@ -1142,7 +759,6 @@ while getopts ":i,:l,:a,:u,:b,: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=$@ @@ -1154,41 +770,13 @@ while getopts ":i,:l,:a,:u,:b,: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" || -d "$(pwd)/$PARAMETER" ]] ; then + elif [ -d "$PARAMETER" ] ; then BACKUP_PATH=$PARAMETER fi done fi - path_correction call_backup - 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 ;; + exit ;; r) echo -e "\n ${YEL}Removing $APP_NAME_LONG...${CRS}\n" @@ -1226,6 +814,8 @@ done ## ENVIRONMENT CHECK dependency_check arch_check + +## CHECK LOCAL INSTALL local_check ## UPDATE diff --git a/helium_launcher_update.sh b/helium_launcher_update.sh index 0f2d1c2..c5ceba9 100755 --- a/helium_launcher_update.sh +++ b/helium_launcher_update.sh @@ -9,6 +9,7 @@ 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" @@ -16,9 +17,6 @@ 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 @@ -32,7 +30,7 @@ ICON=$ASSET_PATH/icon/helium.png SCRIPT_PATH=$HOME/.local/bin ## REMOTE LOCATIONS -REMOTE_REPO_BRANCH="main" +REMOTE_REPO_BRANCH="stable" REMOTE_REPO_URL=https://lab.c95.org/fr4nz/helium-helper/raw/branch/$REMOTE_REPO_BRANCH REMOTE_SCRIPT_URL=$REMOTE_REPO_URL/$SCRIPT_FILE_NAME APP_SOURCE_URL=https://api.github.com/repos/imputnet/helium-linux/releases/latest @@ -89,15 +87,6 @@ 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 @@ -165,13 +154,13 @@ backup_helium() { cd $TMP && rm -rf backup else - echo "$LOG_DATE | Backup (uncompressed) written to $BACKUP_PATH" >> $LOG + echo "$LOG_DATE | Backup - 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 (compressed $BACKUP_COMPRESSION archive) written to $BACKUP_PATH" >> $LOG + echo "$LOG_DATE | Backup - Backup (compressed $BACKUP_COMPRESSION archive) written to $BACKUP_PATH" >> $LOG notify-send --icon="$ICON" "$NOTIFY_NAME" "Backup created" cd $CWD fi @@ -364,9 +353,6 @@ done ## DEPENDENCY CHECK dependency_check -## DE CHECK -desktop_environment - ## UPDATE update_helium