diff --git a/helium_helper_BACKUP_10032.sh b/helium_helper_BACKUP_10032.sh deleted file mode 100755 index e62d0f2..0000000 --- a/helium_helper_BACKUP_10032.sh +++ /dev/null @@ -1,1115 +0,0 @@ -#!/bin/bash -# Helium BOWSER INSTALL & UPDATE SCRIPT ---> INTERACTIVE -########## PREREQUISITES ########### -set -e - -## SOME COLOR -CYN="\e[0;36m" -YEL="\e[0;33m" -RED="\e[0;31m" -GRN="\e[0;32m" -LCY="\e[1;36m" -WHT="\e[1;37m" -CRS="\e[0m" - -## GLOBAL VARIABLES -APP_NAME="Helium" -APP_NAME_LONG="Helium Web Browser" -FILE_EXTENSION="AppImage" -APP_SOURCE="GitHub" -ARCH_OVERRIDE="" -BACKUP_METHOD="full" -BACKUP_COMPRESSION_OVERRIDE="" -SCRIPT_NAME="$APP_NAME Helper Script" -SCRIPT_FILE_NAME="helium_helper.sh" -AUTO_SCRIPT_FILE_NAME="helium_launcher_update.sh" -<<<<<<< HEAD -SCRIPT_VERSION="0.5.9.1" -======= -SCRIPT_VERSION="0.5.9.2" ->>>>>>> main -ALIAS="helium-helper" -DATE=$(date +"%d%m%y") - -## LOCATIONS -TMP=/tmp/$APP_NAME -INSTALL_PATH=$HOME/.apps/$APP_NAME -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 -LOG=$LOG_PATH/log -LAUNCHER_PATH=$HOME/.local/share/applications -SCRIPT_PATH=$HOME/.local/bin - -## REMOTE LOCATIONS -<<<<<<< HEAD -REMOTE_REPO_BRANCH="stable" -REMOTE_REPO_URL=https://lab.c95.org/fr4nz/helium-helper/raw/branch/$REMOTE_REPO_BRANCH -======= -REMOTE_REPO_BRANCH="main" -REMOTE_REPO_URL=https://git.h0ster.org/fr4nz/helium-helper/raw/branch/$REMOTE_REPO_BRANCH ->>>>>>> main -REMOTE_SCRIPT_URL=$REMOTE_REPO_URL/$SCRIPT_FILE_NAME -APP_SOURCE_URL=https://api.github.com/repos/imputnet/helium-linux/releases/latest - -########################### FUNCTIONS ############################ - -#################### DEPENDENCY CHECK #################### -cmd_query() { - if ! command -v $PACKAGE > /dev/null 2>&1 ; then - echo " - $PACKAGE" >> $TMP/missingDeps - fi -} - -dependency_check () { - DEPENDENCIES=("curl" "wget" "tar") - mkdir -p $TMP - - for PACKAGE in "${DEPENDENCIES[@]}" ; do - cmd_query "$PACKAGE" - - 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" - exit_clean - fi -} - -#################### SHELL CHECK #################### -shell_query() { - if [ "$(echo $SHELL | grep "$SHELL_OPTION")" ] ; then - ACTIVE_SHELL=$SHELL_OPTION - fi - -} - -shell_check() { - SHELLS=("bash" "fish" "zsh") - - for SHELL_OPTION in "${SHELLS[@]}" ; do - shell_query "$SHELL_OPTION" - done -} - -#################### ARCH CHECK #################### -arch_check() { - if [ "$ARCH_OVERRIDE" ] ; then - ARCH=$ARCH_OVERRIDE - - else - ARCH=$(uname -m) - if [ "$ARCH" == "aarch64" ] ; then - ARCH="arm64" - - elif [ "$ARCH" == "amd64" ] ; then - ARCH="x86_64" - fi - fi - - if ! [[ "$ARCH" == "arm64" || "$ARCH" == "x86_64" ]] ; then - echo -e "\n ${CYN}$ARCH ${RED}unsupported! Only ${CYN}x86_68 ${RED}or ${CYN}arm64 ${RED}architecture are supported!${CRS}\n" - exit - fi -} - -#################### LOCAL INSTALL CHECK #################### -local_check() { - if ! [ -d "$INSTALL_PATH" ] ; then - echo -e "\n ${YEL}$APP_NAME_LONG directory not found!${CRS}\n" - install_application - exit - - elif ! [ -f "$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION" ] ; then - echo -e "\n ${YEL}$APP_NAME_LONG directory found but no executable named ${CYN}$APP_NAME.$FILE_EXTENSION${YEL}!${CRS}\n" - install_application - exit - 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_application() { - if [ -f "$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION" ] ; then - echo -e " ${YEL}$APP_NAME_LONG AppImage found! Trying to update...${CRS}" - update_application - exit - fi - - while true ; do - read -p " Download and install $APP_NAME_LONG from $APP_SOURCE? (Y/n) : " CONFIRM_INSTALL - - if [[ "$CONFIRM_INSTALL" == "" || "$CONFIRM_INSTALL" == "y" || "$CONFIRM_INSTALL" == "Y" ]] ; then - DOWNLOAD_URL=$(curl -s $APP_SOURCE_URL | grep "browser_download_url" | grep "$ARCH.$FILE_EXTENSION" | grep -v "zsync" | tr -d \" | awk '{print $2}') - APP_SOURCE_FILENAME=$(curl -s $APP_SOURCE_URL | grep "browser_download_url" | grep "$ARCH.$FILE_EXTENSION" | grep -v "zsync" | tr -d \" | awk '{print $2}' | awk -F'/' '{print $9}') - echo -e "\n - Downloading ${CYN}$APP_SOURCE_FILENAME${CRS}..." - wget -P $TMP $DOWNLOAD_URL -q - chmod +x $TMP/$APP_SOURCE_FILENAME - mkdir -p $INSTALL_PATH - mv $TMP/$APP_SOURCE_FILENAME $INSTALL_PATH/$APP_NAME.$FILE_EXTENSION - add_launcher - echo -e "\n ${GRN}$APP_NAME_LONG is installed!${CRS}\n" - break - - elif [[ "$CONFIRM_INSTALL" == "n" || "$CONFIRM_INSTALL" == "N" ]] ; then - echo -e "\n ${RED}Cancelled!${CRS}\n" - break - - else - echo -e "\n ${YEL}Invalid response!${CRS}\n" - fi - done -} - -#################### LAUNCHER #################### -add_launcher() { - if [ -f "$LAUNCHER_PATH/$APP_NAME.desktop" ] ; then - echo -e "\n ${YEL}${APP_NAME}.desktop already exists!${CRS}" - - elif [ -f "$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION" ] ; then - while true ; do - echo - read -p " Add $APP_NAME_LONG launcher to $LAUNCHER_PATH? (Y/n) : " CONFIRM_LAUNCHER - - if [[ "$CONFIRM_LAUNCHER" == "" || "$CONFIRM_LAUNCHER" == "y" || "$CONFIRM_LAUNCHER" == "Y" ]] ; then - LAUNCHER_URL=$REMOTE_REPO_URL/assets/launcher/helium.desktop.template - ICON_URL=$REMOTE_REPO_URL/assets/icon/helium.png - AUTO_SCRIPT_URL=$REMOTE_REPO_URL/$AUTO_SCRIPT_FILE_NAME - LOCAL_VERSION=$($INSTALL_PATH/$APP_NAME.$FILE_EXTENSION --version | awk '{print $2}') - mkdir -p $LAUNCHER_PATH $SCRIPT_PATH $BACKUP_PATH $ASSET_PATH/icon - if ! [ -f "$SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME" ] ; then - echo -e "\n - Downloading ${CYN}$AUTO_SCRIPT_FILE_NAME${CRS}..." - wget -P $TMP $AUTO_SCRIPT_URL -q - chmod +x $TMP/$AUTO_SCRIPT_FILE_NAME - mv $TMP/$AUTO_SCRIPT_FILE_NAME $SCRIPT_PATH - fi - - echo -e "\n - Downloading ${CYN}launcher files${CRS}..." - wget -P $TMP $LAUNCHER_URL -q - wget -P $TMP $ICON_URL -q - sed -i "s|%APP_LOCATION%|$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION|" $TMP/helium.desktop.template - sed -i "s|%ICON_LOCATION%|$ASSET_PATH/icon/helium.png|" $TMP/helium.desktop.template - sed -i "s|%APP_VERSION%|$LOCAL_VERSION|" $TMP/helium.desktop.template - sed -i "s|%QUIET_UPDATE_SCRIPT%|$SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME|" $TMP/helium.desktop.template - sed -i "s|%SCRIPT_UPDATE%|$SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME -S|" $TMP/helium.desktop.template - sed -i "s|%OPEN_LOG_EDITOR%|$SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME -L|" $TMP/helium.desktop.template - mv $TMP/helium.desktop.template $LAUNCHER_PATH/$APP_NAME.desktop - mv $TMP/helium.png $ASSET_PATH/icon - echo -e "\n ${GRN}$APP_NAME_LONG launcher is set up!${CRS}" - break - - elif [[ "$CONFIRM_LAUNCHER" == "n" || "$CONFIRM_LAUNCHER" == "N" ]] ; then - echo -e " ${RED}Launcher not added!${CRS}" - break - - else - echo -e " ${YEL}Invalid response!${CRS}\n" - fi - done - - else - echo -e "\n ${RED}$APP_NAME_LONG AppImage not found! Can't add launcher...${CRS}" - install_application - exit - fi -} - -#################### ALIAS #################### -add_alias() { - if ! [ -f "$SCRIPT_PATH/$SCRIPT_FILE_NAME" ] ; then - mkdir -p $SCRIPT_PATH - wget -P $TMP $REMOTE_SCRIPT_URL -q - chmod +x $TMP/$SCRIPT_FILE_NAME - mv $TMP/$SCRIPT_FILE_NAME $SCRIPT_PATH - fi - - if [ "$ACTIVE_SHELL" == "zsh" ] ; then - if [ "$(cat $HOME/.zshrc | grep "$ALIAS")" ] ; then - echo -e "\n ${LCY}$ALIAS${CRS} already present in ${CYN}$HOME/.zshrc${CRS}\n" - - else - echo "### $APP_NAME_LONG Alias zsh ###" >> $HOME/.zshrc - echo "alias $ALIAS=\"$SCRIPT_PATH/$SCRIPT_FILE_NAME\"" >> $HOME/.zshrc - echo >> $HOME/.zshrc - echo -e "\n ${LCY}$ALIAS${CRS} added to ${CYN}$HOME/.zshrc${CRS}\n" - fi - - elif [ "$ACTIVE_SHELL" == "bash" ] ; then - if [ "$(cat $HOME/.bashrc | grep "$ALIAS")" ] ; then - echo -e "\n ${LCY}$ALIAS${CRS} already present in ${CYN}$HOME/.bashrc${CRS}\n" - - else - echo "### $APP_NAME_LONG Alias bash ###" >> $HOME/.bashrc - echo "alias $ALIAS=\"$SCRIPT_PATH/$SCRIPT_FILE_NAME\"" >> $HOME/.bashrc - echo >> $HOME/.bashrc - echo -e "\n ${LCY}$ALIAS${CRS} added to ${CYN}$HOME/.bashrc${CRS}\n" - fi - - elif [ "$ACTIVE_SHELL" == "fish" ] ; then - if [ "$(cat $HOME/.config/fish/config.fish | grep "source $HOME/.config/fish/$ALIAS.fish")" ] ; then - echo -e "\n ${LCY}$ALIAS${CRS} already present in ${CYN}$HOME/.config/fish/config.fish${CRS}\n" - - else - echo "### $APP_NAME_LONG Alias FISH ###" > $HOME/.config/fish/$ALIAS.fish - echo >> $HOME/.config/fish/$ALIAS.fish - echo "function $ALIAS" >> $HOME/.config/fish/$ALIAS.fish - echo " $SCRIPT_PATH/$SCRIPT_FILE_NAME \$argv" >> $HOME/.config/fish/$ALIAS.fish - echo "end" >> $HOME/.config/fish/$ALIAS.fish - echo >> $HOME/.config/fish/$ALIAS.fish - echo "source $HOME/.config/fish/$ALIAS.fish" >> $HOME/.config/fish/config.fish - echo -e "\n ${LCY}$ALIAS ${CRS}added to ${CYN}$HOME/.config/fish/config.fish${CRS}\n" - fi - - else - echo -e "\n ${LCY}$ACTIVE_SHELL${RED}shell is not yet supported!${CRS}\n" - echo -e " ${CRS}Working implementation are available for bash, zsh & fish!${CRS}\n" - fi -} - -#################### 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" - exit - - elif [ -z "$LOCAL_VERSION" ] ; then - echo -e "\n ${RED}Empty version tag from ${CYN}local AppImage${RED}! Can't compare, exiting...${CRS}\n" - 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 - echo -e "\n ${LCY}$APP_NAME_LONG is updatable!${CRS}\n" - app_version_info - - while true ; do - read -p " Download and update $APP_NAME_LONG from $APP_SOURCE? (Y/n) : " CONFIRM - - if [[ "$CONFIRM" == "" || "$CONFIRM" == "y" || "$CONFIRM" == "Y" ]] ; then - DOWNLOAD_URL=$(curl -s $APP_SOURCE_URL | grep "browser_download_url" | grep "$ARCH.$FILE_EXTENSION" | grep -v "zsync" | tr -d \" | awk '{print $2}') - APP_SOURCE_FILENAME=$(curl -s $APP_SOURCE_URL | grep "browser_download_url" | grep "$ARCH.$FILE_EXTENSION" | grep -v "zsync" | tr -d \" | awk '{print $2}' | awk -F'/' '{print $9}') - mkdir -p $TMP - echo -e "\n - Downloading ${CYN}$APP_SOURCE_FILENAME${CRS}..." - wget -P $TMP $DOWNLOAD_URL -q - ${BACKUP_METHOD}_backup - chmod +x $TMP/$APP_SOURCE_FILENAME - mv $TMP/$APP_SOURCE_FILENAME $INSTALL_PATH/$APP_NAME.$FILE_EXTENSION - sed -i "s|X-AppImage-Version=.*|X-AppImage-Version=$($INSTALL_PATH/$APP_NAME.$FILE_EXTENSION --version | awk '{print $2}')|" $LAUNCHER_PATH/$APP_NAME.desktop - echo -e " ${GRN}$APP_NAME_LONG is up-to-date!${CRS}\n" - break - - elif [[ "$CONFIRM" == "n" || "$CONFIRM" == "N" ]] ; then - echo -e "\n ${RED}Cancelled!${CRS}\n" - exit - - else - echo -e "\n ${YEL}Invalid response!${CRS}\n" - fi - done - - else - echo -e "\n ${RED}Version tags malformed or you are using a Beta version!${CRS}\n" - app_version_info - echo -e " ${RED}Update failed... Exiting...${CRS}\n" - exit - fi -} - -#################### BACKUP #################### -call_backup() { - 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 - read -p " Overwrite backup? (y/N) : " OVERWRITE_BACKUP - - if [[ "$OVERWRITE_BACKUP" == "" || "$OVERWRITE_BACKUP" == "n" || "$OVERWRITE_BACKUP" == "N" ]] ; then - echo -e "\n ${YEL}Skipping backup process...${CRS}\n" - break - - elif [[ "$OVERWRITE_BACKUP" == "y" || "$OVERWRITE_BACKUP" == "Y" ]] ; then - echo -e "\n ${YEL}Overwriting backup...${CRS}" - 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 - 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 - - if [ -d "$BACKUP_ITEM" ] ; then - mkdir -p $TMP/backup - cp -r $BACKUP_ITEM $TMP/backup - - elif [ -f "$BACKUP_ITEM" ] ; then - mkdir -p $TMP/backup - cp $BACKUP_ITEM $TMP/backup - fi - done - - backup_logger -} - -script_backup() { - if [ -d "$SCRIPT_PATH" ] ; then - BACKUPABLE=("$SCRIPT_PATH/$SCRIPT_FILE_NAME" "$SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME") - echo -e "\n - ${CRS}Collecting files for ${CYN}$BACKUP_METHOD${CRS} backup...${CRS}" - backup_file_collector - pack_backup - - else - echo -e " ${YEL}Nothing to back up...${CRS}" - fi -} - -app_backup() { - if [ -f "$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION" ] ; then - BACKUPABLE=("$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION") - echo -e "\n - ${CRS}Collecting files for ${CYN}$BACKUP_METHOD${CRS} backup...${CRS}" - backup_file_collector - pack_backup - - else - echo -e " ${YEL}Nothing to back up...${CRS}" - fi -} - -config_backup() { - if [[ -d "$LAUNCHER_PATH" || -d $APP_CONFIG_PATH ]] ; then - BACKUPABLE=("$LAUNCHER_PATH/$APP_NAME.desktop" "$APP_CONFIG_PATH") - echo -e "\n - ${CRS}Collecting files for ${CYN}$BACKUP_METHOD${CRS} backup...${CRS}" - backup_file_collector - pack_backup - - else - echo -e " ${YEL}Nothing to back up...${CRS}" - fi -} - -full_backup() { - if [[ -d "$INSTALL_PATH" || -d "$SCRIPT_PATH" || -d $APP_CONFIG_PATH ]] ; then - BACKUPABLE=("$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") - echo -e "\n - ${CRS}Collecting files for ${CYN}$BACKUP_METHOD${CRS} backup...${CRS}" - backup_file_collector - pack_backup - - else - echo -e " ${YEL}Nothing to back up...${CRS}" - fi -} - -pack_backup() { - if [ -d "$TMP/backup" ] ; then - CWD=$(pwd) - cd $TMP/backup - - if [[ -f "*.sh" ]] ; then - chmod -x *.sh - - elif [[ -f "*.$FILE_EXTENSION" ]] ; then - chmod -x *.$FILE_EXTENSION - fi - - if [ "$BACKUP_COMPRESSION_OVERRIDE" ] ; then - BACKUP_COMPRESSION=$BACKUP_COMPRESSION_OVERRIDE - - else - COMPRESSION_METHOD=("pbzip2" "gzip" "bzip2" "zip") - - until [ "$BACKUP_COMPRESSION" ] ; do - for COMPRESSION_TYPE in "${COMPRESSION_METHOD[@]}" ; do - - if command -v $COMPRESSION_TYPE > /dev/null 2>&1 ; then - BACKUP_COMPRESSION=$COMPRESSION_TYPE - break - fi - done - done - fi - - echo -e "\n - ${CRS}Packing backup archive with ${CYN}$BACKUP_COMPRESSION${CRS}...${CRS}\n" - - if [ "$BACKUP_COMPRESSION" == "pbzip2" ] ; then - tar -cf $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar * > /dev/null 2>&1 - pbzip2 $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar - mkdir -p $BACKUP_PATH - mv $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar.bz2 $BACKUP_PATH - cd $TMP && rm -rf backup - - elif [ "$BACKUP_COMPRESSION" == "gzip" ] ; then - tar -cf $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar * > /dev/null 2>&1 - gzip $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar - mkdir -p $BACKUP_PATH - mv $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar.gz $BACKUP_PATH - cd $TMP && rm -rf backup - - elif [ "$BACKUP_COMPRESSION" == "bzip2" ] ; then - tar -cf $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar * > /dev/null 2>&1 - bzip2 $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar - mkdir -p $BACKUP_PATH - mv $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar.bz2 $BACKUP_PATH - cd $TMP && rm -rf backup - - elif [ "$BACKUP_COMPRESSION" == "zip" ] ; then - tar -cf $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar * > /dev/null 2>&1 - zip -r $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar.zip $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar > /dev/null 2>&1 - mkdir -p $BACKUP_PATH - mv $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar.zip $BACKUP_PATH - cd $TMP && rm -rf backup - - else - echo -e " ${YEL}No supported compression method detected! Copying backup uncompressed...${CRS}\n" - mkdir -p $BACKUP_PATH - mv $TMP/backup $BACKUP_PATH/$APP_NAME.$BACKUP_METHOD.backup_$DATE - cd $TMP && rm -rf backup - fi - - echo -e " - ${CRS}Backup stored in ${CYN}$BACKUP_PATH${CRS}...${CRS}\n" - cd $CWD - 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 - 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 - - while true ; do - read -p " Remove $APP_NAME_LONG incl. backups, configuration and launcher? (Y/n) : " CONFIRM_REMOVE - - if [[ "$CONFIRM_REMOVE" == "" || "$CONFIRM_REMOVE" == "y" || "$CONFIRM_REMOVE" == "Y" ]] ; then - REMOVABLE=("$INSTALL_PATH" "$LAUNCHER_PATH/$APP_NAME.desktop" "$APP_CONFIG_PATH" "$SCRIPT_PATH/$SCRIPT_FILE_NAME" "$SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME") - echo -e "\n - ${CRS}Removing ${CYN}$APP_NAME_LONG${CRS} files, directories and configuration...${CRS}" - - for RM_PATH in "${REMOVABLE[@]}" ; do - if [[ -f "$RM_PATH" || -d "$RM_PATH" ]] ; then - rm -rf "$RM_PATH" - fi - done - - shell_check - - if [ "$ACTIVE_SHELL" == "zsh" ] ; then - if [ "$(cat $HOME/.zshrc | grep "$ALIAS")" ] ; then - sed -i "/$APP_NAME_LONG/d" $HOME/.zshrc - sed -i "/$ALIAS/d" $HOME/.zshrc - echo -e "\n - Alias removed from ${CYN}$ACTIVE_SHELL${CRS}" - fi - - elif [ "$ACTIVE_SHELL" == "bash" ] ; then - if [ "$(cat $HOME/.bashrc | grep "$ALIAS")" ] ; then - sed -i "/$APP_NAME_LONG/d" $HOME/.bashrc - sed -i "/$ALIAS/d" $HOME/.bashrc - echo -e "\n - Alias removed from ${CYN}$ACTIVE_SHELL${CRS}" - fi - - elif [ "$ACTIVE_SHELL" == "fish" ] ; then - if [ "$(cat $HOME/.config/fish/config.fish | grep "source $HOME/.config/fish/$ALIAS.fish")" ] ; then - sed -i "/$ALIAS/d" $HOME/.config/fish/config.fish - rm $HOME/.config/fish/$ALIAS.fish - echo -e "\n - Alias removed from ${CYN}$ACTIVE_SHELL${CRS}" - fi - fi - - echo -e "\n ${YEL}$APP_NAME_LONG removed!${CRS}\n" - break - - elif [[ "$CONFIRM_REMOVE" == "n" || "$CONFIRM_REMOVE" == "N" ]] ; then - echo -e "\n ${RED}Cancelled!${CRS}" - exit - - else - echo -e "\n ${YEL}Invalid response!${CRS}\n" - fi - done - - else - echo -e " ${RED}Can't remove $APP_NAME_LONG! ${CYN}$INSTALL_PATH ${RED}directory not found...${CRS}\n" - exit - fi -} - -#################### SCRIPT VERSION #################### -script_version() { - echo -e "\n ${CYN}$APP_NAME_LONG Helper Script Version : ${CRS}$SCRIPT_VERSION\n" -} - -#################### UPDATE SCRIPT #################### -scrip_version_info() { - echo -e " - ${CYN}Local Version :\t${CRS}$SCRIPT_VERSION" - echo -e " - ${CYN}Remote Version :\t${CRS}$REMOTE_SCRIPT_VERSION" - echo -e " - ${CYN}Update Branch :\t${CRS}$REMOTE_REPO_BRANCH\n" -} - -update_script() { - if ! [ -f "$SCRIPT_PATH/$SCRIPT_FILE_NAME" ] ; then - echo -e "\n ${YEL}$SCRIPT_FILE_NAME not found...${CRS}" - - while true ; do - echo - 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 - 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" - break - - elif [[ "$CONFIRM_SCRIPT_INSTALL" == "n" || "$CONFIRM_SCRIPT_INSTALL" == "N" ]] ; then - echo -e " ${RED}Cancelled!${CRS}\n" - exit - - else - echo -e " ${YEL}Invalid response!${CRS}\n" - fi - done - fi - - REMOTE_SCRIPT_VERSION=$(curl -s $REMOTE_SCRIPT_URL | grep -m 1 "SCRIPT_VERSION" | tr -d 'SCRIPT_VERSION="') - - ### 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" - 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" - exit - fi - - ### COMPARE LOCAL & REMOTE VERSION - SCRIPT_VERSION_NUM=$(echo $SCRIPT_VERSION | tr -d .) - REMOTE_SCRIPT_VERSION_NUM=$(echo $REMOTE_SCRIPT_VERSION | tr -d .) - - if [ "$REMOTE_SCRIPT_VERSION" == "$SCRIPT_VERSION" ] ; then - echo -e "\n ${GRN}$SCRIPT_FILE_NAME is already up-to-date!${CRS}\n" - - elif [ "$REMOTE_SCRIPT_VERSION_NUM" -gt "$SCRIPT_VERSION_NUM" ] ; then - echo -e "\n ${LCY}$SCRIPT_FILE_NAME is updatable!${CRS}\n" - scrip_version_info - - while true ; do - read -p " Update $SCRIPT_FILE_NAME? (Y/n) : " CONFIRM_SCRIPT_UPDATE - - if [[ "$CONFIRM_SCRIPT_UPDATE" == "" || "$CONFIRM_SCRIPT_UPDATE" == "y" || "$CONFIRM_SCRIPT_UPDATE" == "Y" ]] ; then - if ! [ -d "$BACKUP_PATH" ] ; then - mkdir -p $BACKUP_PATH - fi - mv $SCRIPT_PATH/$SCRIPT_FILE_NAME $BACKUP_PATH/$SCRIPT_FILE_NAME.old - mv $SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME $BACKUP_PATH/$AUTO_SCRIPT_FILE_NAME.old - 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 " ${GRN}$SCRIPT_FILE_NAME is up-to-date!${CRS}" - break - - elif [[ "$CONFIRM_SCRIPT_UPDATE" == "n" || "$CONFIRM_SCRIPT_UPDATE" == "N" ]] ; then - echo -e "\n ${RED}Cancelled!${CRS}\n" - break - - else - echo -e "\n ${YEL}Invalid response!${CRS}\n" - fi - done - - else - echo -e "\n ${RED}Version tags malformed or you are using a Beta version!${CRS}\n" - scrip_version_info - echo -e " ${RED}Updating script failed...${CRS}\n" - fi -} - -#################### 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" -} - -compare_version() { - 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}') - - if [ -z "$APP_SOURCE_VERSION" ] ; then - 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}\n" - exit - fi - - LOCAL_VERSION_NUM=$(echo $LOCAL_VERSION | tr -d .) - APP_SOURCE_VERSION_NUM=$(echo $APP_SOURCE_VERSION | tr -d .) - - if [ "$APP_SOURCE_VERSION" == "$LOCAL_VERSION" ] ; then - echo -e "\n ${GRN}$APP_NAME_LONG is up-to-date!${CRS}\n" - app_version_info - - elif [ "$APP_SOURCE_VERSION_NUM" -gt "$LOCAL_VERSION_NUM" ] ; then - echo -e "\n ${LCY}$APP_NAME_LONG is updatable!${CRS}\n" - app_version_info - - else - echo -e "\n ${RED}Version tags malformed or you are using a Beta version!${CRS}\n" - app_version_info - fi -} - -#################### 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 "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" -<<<<<<< HEAD - echo -e "\t-B\tRestore $APP_NAME_LONG & configuration from backup" -======= - #echo -e "\t-B\tRestore $APP_NAME_LONG & configuration from backup" ->>>>>>> main - echo -e "\t-r\tRemove $APP_NAME_LONG" - echo -e "\t-c\tCompare local to remote version" - echo -e "\t-s\tShow script version" - echo -e "\t-S\tUpdate $SCRIPT_FILE_NAME" - echo -e "\t-h\tPrint this help page\n" - echo -e "Configured directories:\n" - echo -e "\t${CYN}${INSTALL_PATH}${CRS}\t\tInstall location" - echo -e "\t${CYN}${LAUNCHER_PATH}${CRS}\tLauncher location" - echo -e "\t${CYN}${SCRIPT_PATH}${CRS}\t\t\tScript location\n" -} - -#################### EXIT CLEAN #################### -exit_clean() { - if [ -d "$TMP" ] ; then - rm -rf $TMP - fi - - exit -} - -########################### MAIN ########################### - -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}" - help - exit - fi - - case $OPTION in - i) - TARGET="INSTALL" - echo -e "\n ${YEL}Installing $APP_NAME_LONG...${CRS}\n" - if [ "$#" -gt "1" ] ; then - ALL_PARAMETER=$@ - - for PARAMETER in ${ALL_PARAMETER[@]} ; do - if [ -d "$PARAMETER" ] ; then - INSTALL_PATH=$PARAMETER - fi - done - fi - dependency_check - arch_check - path_correction - install_application - exit_clean ;; - - l) - echo -e "\n ${YEL}Adding $APP_NAME_LONG launcher...${CRS}" - dependency_check - local_check - add_launcher - exit_clean ;; - - a) - echo -e "\n ${YEL}Adding alias...${CRS}" - if [ "$#" -gt "1" ] ; then - ALL_PARAMETER=$@ - - for PARAMETER in ${ALL_PARAMETER[@]} ; do - if [ "$PARAMETER" ] ; then - ALIAS=$PARAMETER - fi - done - fi - shell_check - add_alias - exit ;; - - u) - echo -e "\n ${YEL}Updating $APP_NAME_LONG...${CRS}" - dependency_check - arch_check - local_check - update_application - exit_clean ;; - - b) - TARGET="BACKUP" - echo -e "\n ${YEL}Backing up $APP_NAME_LONG...${CRS}" - if [ "$#" -gt "1" ] ; then - ALL_PARAMETER=$@ - - for PARAMETER in ${ALL_PARAMETER[@]} ; do - if [[ "$PARAMETER" == "script" || "$PARAMETER" == "config" || "$PARAMETER" == "app" || "$PARAMETER" == "full" ]] ; then - BACKUP_METHOD=$PARAMETER - - elif [[ "$PARAMETER" == "pbzip2" || "$PARAMETER" == "gzip" || "$PARAMETER" == "bzip2" || "$PARAMETER" == "zip" ]] ; then - BACKUP_COMPRESSION_OVERRIDE=$PARAMETER - - elif [[ -d "$PARAMETER" || -d "$(pwd)/$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 ;; - - r) - echo -e "\n ${YEL}Removing $APP_NAME_LONG...${CRS}\n" - remove_application - exit ;; - - c) - echo -e "\n ${YEL}Comparing remote to local version...${CRS}" - dependency_check - local_check - compare_version - exit_clean ;; - - s) - script_version - exit ;; - - S) - echo -e "\n ${YEL}Updating script...${CRS}" - dependency_check - update_script - exit_clean ;; - - h) - help - exit ;; - - *) - echo -e "\n${YEL}Option ${RED}$1${YEL} not recognized... Refer to help below!${CRS}" - help - exit ;; - esac -done - -## ENVIRONMENT CHECK -dependency_check -arch_check - -## CHECK LOCAL INSTALL -local_check - -## UPDATE -update_application - -## CLEAN -exit_clean diff --git a/helium_helper_BACKUP_9867.sh b/helium_helper_BACKUP_9867.sh deleted file mode 100755 index e62d0f2..0000000 --- a/helium_helper_BACKUP_9867.sh +++ /dev/null @@ -1,1115 +0,0 @@ -#!/bin/bash -# Helium BOWSER INSTALL & UPDATE SCRIPT ---> INTERACTIVE -########## PREREQUISITES ########### -set -e - -## SOME COLOR -CYN="\e[0;36m" -YEL="\e[0;33m" -RED="\e[0;31m" -GRN="\e[0;32m" -LCY="\e[1;36m" -WHT="\e[1;37m" -CRS="\e[0m" - -## GLOBAL VARIABLES -APP_NAME="Helium" -APP_NAME_LONG="Helium Web Browser" -FILE_EXTENSION="AppImage" -APP_SOURCE="GitHub" -ARCH_OVERRIDE="" -BACKUP_METHOD="full" -BACKUP_COMPRESSION_OVERRIDE="" -SCRIPT_NAME="$APP_NAME Helper Script" -SCRIPT_FILE_NAME="helium_helper.sh" -AUTO_SCRIPT_FILE_NAME="helium_launcher_update.sh" -<<<<<<< HEAD -SCRIPT_VERSION="0.5.9.1" -======= -SCRIPT_VERSION="0.5.9.2" ->>>>>>> main -ALIAS="helium-helper" -DATE=$(date +"%d%m%y") - -## LOCATIONS -TMP=/tmp/$APP_NAME -INSTALL_PATH=$HOME/.apps/$APP_NAME -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 -LOG=$LOG_PATH/log -LAUNCHER_PATH=$HOME/.local/share/applications -SCRIPT_PATH=$HOME/.local/bin - -## REMOTE LOCATIONS -<<<<<<< HEAD -REMOTE_REPO_BRANCH="stable" -REMOTE_REPO_URL=https://lab.c95.org/fr4nz/helium-helper/raw/branch/$REMOTE_REPO_BRANCH -======= -REMOTE_REPO_BRANCH="main" -REMOTE_REPO_URL=https://git.h0ster.org/fr4nz/helium-helper/raw/branch/$REMOTE_REPO_BRANCH ->>>>>>> main -REMOTE_SCRIPT_URL=$REMOTE_REPO_URL/$SCRIPT_FILE_NAME -APP_SOURCE_URL=https://api.github.com/repos/imputnet/helium-linux/releases/latest - -########################### FUNCTIONS ############################ - -#################### DEPENDENCY CHECK #################### -cmd_query() { - if ! command -v $PACKAGE > /dev/null 2>&1 ; then - echo " - $PACKAGE" >> $TMP/missingDeps - fi -} - -dependency_check () { - DEPENDENCIES=("curl" "wget" "tar") - mkdir -p $TMP - - for PACKAGE in "${DEPENDENCIES[@]}" ; do - cmd_query "$PACKAGE" - - 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" - exit_clean - fi -} - -#################### SHELL CHECK #################### -shell_query() { - if [ "$(echo $SHELL | grep "$SHELL_OPTION")" ] ; then - ACTIVE_SHELL=$SHELL_OPTION - fi - -} - -shell_check() { - SHELLS=("bash" "fish" "zsh") - - for SHELL_OPTION in "${SHELLS[@]}" ; do - shell_query "$SHELL_OPTION" - done -} - -#################### ARCH CHECK #################### -arch_check() { - if [ "$ARCH_OVERRIDE" ] ; then - ARCH=$ARCH_OVERRIDE - - else - ARCH=$(uname -m) - if [ "$ARCH" == "aarch64" ] ; then - ARCH="arm64" - - elif [ "$ARCH" == "amd64" ] ; then - ARCH="x86_64" - fi - fi - - if ! [[ "$ARCH" == "arm64" || "$ARCH" == "x86_64" ]] ; then - echo -e "\n ${CYN}$ARCH ${RED}unsupported! Only ${CYN}x86_68 ${RED}or ${CYN}arm64 ${RED}architecture are supported!${CRS}\n" - exit - fi -} - -#################### LOCAL INSTALL CHECK #################### -local_check() { - if ! [ -d "$INSTALL_PATH" ] ; then - echo -e "\n ${YEL}$APP_NAME_LONG directory not found!${CRS}\n" - install_application - exit - - elif ! [ -f "$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION" ] ; then - echo -e "\n ${YEL}$APP_NAME_LONG directory found but no executable named ${CYN}$APP_NAME.$FILE_EXTENSION${YEL}!${CRS}\n" - install_application - exit - 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_application() { - if [ -f "$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION" ] ; then - echo -e " ${YEL}$APP_NAME_LONG AppImage found! Trying to update...${CRS}" - update_application - exit - fi - - while true ; do - read -p " Download and install $APP_NAME_LONG from $APP_SOURCE? (Y/n) : " CONFIRM_INSTALL - - if [[ "$CONFIRM_INSTALL" == "" || "$CONFIRM_INSTALL" == "y" || "$CONFIRM_INSTALL" == "Y" ]] ; then - DOWNLOAD_URL=$(curl -s $APP_SOURCE_URL | grep "browser_download_url" | grep "$ARCH.$FILE_EXTENSION" | grep -v "zsync" | tr -d \" | awk '{print $2}') - APP_SOURCE_FILENAME=$(curl -s $APP_SOURCE_URL | grep "browser_download_url" | grep "$ARCH.$FILE_EXTENSION" | grep -v "zsync" | tr -d \" | awk '{print $2}' | awk -F'/' '{print $9}') - echo -e "\n - Downloading ${CYN}$APP_SOURCE_FILENAME${CRS}..." - wget -P $TMP $DOWNLOAD_URL -q - chmod +x $TMP/$APP_SOURCE_FILENAME - mkdir -p $INSTALL_PATH - mv $TMP/$APP_SOURCE_FILENAME $INSTALL_PATH/$APP_NAME.$FILE_EXTENSION - add_launcher - echo -e "\n ${GRN}$APP_NAME_LONG is installed!${CRS}\n" - break - - elif [[ "$CONFIRM_INSTALL" == "n" || "$CONFIRM_INSTALL" == "N" ]] ; then - echo -e "\n ${RED}Cancelled!${CRS}\n" - break - - else - echo -e "\n ${YEL}Invalid response!${CRS}\n" - fi - done -} - -#################### LAUNCHER #################### -add_launcher() { - if [ -f "$LAUNCHER_PATH/$APP_NAME.desktop" ] ; then - echo -e "\n ${YEL}${APP_NAME}.desktop already exists!${CRS}" - - elif [ -f "$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION" ] ; then - while true ; do - echo - read -p " Add $APP_NAME_LONG launcher to $LAUNCHER_PATH? (Y/n) : " CONFIRM_LAUNCHER - - if [[ "$CONFIRM_LAUNCHER" == "" || "$CONFIRM_LAUNCHER" == "y" || "$CONFIRM_LAUNCHER" == "Y" ]] ; then - LAUNCHER_URL=$REMOTE_REPO_URL/assets/launcher/helium.desktop.template - ICON_URL=$REMOTE_REPO_URL/assets/icon/helium.png - AUTO_SCRIPT_URL=$REMOTE_REPO_URL/$AUTO_SCRIPT_FILE_NAME - LOCAL_VERSION=$($INSTALL_PATH/$APP_NAME.$FILE_EXTENSION --version | awk '{print $2}') - mkdir -p $LAUNCHER_PATH $SCRIPT_PATH $BACKUP_PATH $ASSET_PATH/icon - if ! [ -f "$SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME" ] ; then - echo -e "\n - Downloading ${CYN}$AUTO_SCRIPT_FILE_NAME${CRS}..." - wget -P $TMP $AUTO_SCRIPT_URL -q - chmod +x $TMP/$AUTO_SCRIPT_FILE_NAME - mv $TMP/$AUTO_SCRIPT_FILE_NAME $SCRIPT_PATH - fi - - echo -e "\n - Downloading ${CYN}launcher files${CRS}..." - wget -P $TMP $LAUNCHER_URL -q - wget -P $TMP $ICON_URL -q - sed -i "s|%APP_LOCATION%|$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION|" $TMP/helium.desktop.template - sed -i "s|%ICON_LOCATION%|$ASSET_PATH/icon/helium.png|" $TMP/helium.desktop.template - sed -i "s|%APP_VERSION%|$LOCAL_VERSION|" $TMP/helium.desktop.template - sed -i "s|%QUIET_UPDATE_SCRIPT%|$SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME|" $TMP/helium.desktop.template - sed -i "s|%SCRIPT_UPDATE%|$SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME -S|" $TMP/helium.desktop.template - sed -i "s|%OPEN_LOG_EDITOR%|$SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME -L|" $TMP/helium.desktop.template - mv $TMP/helium.desktop.template $LAUNCHER_PATH/$APP_NAME.desktop - mv $TMP/helium.png $ASSET_PATH/icon - echo -e "\n ${GRN}$APP_NAME_LONG launcher is set up!${CRS}" - break - - elif [[ "$CONFIRM_LAUNCHER" == "n" || "$CONFIRM_LAUNCHER" == "N" ]] ; then - echo -e " ${RED}Launcher not added!${CRS}" - break - - else - echo -e " ${YEL}Invalid response!${CRS}\n" - fi - done - - else - echo -e "\n ${RED}$APP_NAME_LONG AppImage not found! Can't add launcher...${CRS}" - install_application - exit - fi -} - -#################### ALIAS #################### -add_alias() { - if ! [ -f "$SCRIPT_PATH/$SCRIPT_FILE_NAME" ] ; then - mkdir -p $SCRIPT_PATH - wget -P $TMP $REMOTE_SCRIPT_URL -q - chmod +x $TMP/$SCRIPT_FILE_NAME - mv $TMP/$SCRIPT_FILE_NAME $SCRIPT_PATH - fi - - if [ "$ACTIVE_SHELL" == "zsh" ] ; then - if [ "$(cat $HOME/.zshrc | grep "$ALIAS")" ] ; then - echo -e "\n ${LCY}$ALIAS${CRS} already present in ${CYN}$HOME/.zshrc${CRS}\n" - - else - echo "### $APP_NAME_LONG Alias zsh ###" >> $HOME/.zshrc - echo "alias $ALIAS=\"$SCRIPT_PATH/$SCRIPT_FILE_NAME\"" >> $HOME/.zshrc - echo >> $HOME/.zshrc - echo -e "\n ${LCY}$ALIAS${CRS} added to ${CYN}$HOME/.zshrc${CRS}\n" - fi - - elif [ "$ACTIVE_SHELL" == "bash" ] ; then - if [ "$(cat $HOME/.bashrc | grep "$ALIAS")" ] ; then - echo -e "\n ${LCY}$ALIAS${CRS} already present in ${CYN}$HOME/.bashrc${CRS}\n" - - else - echo "### $APP_NAME_LONG Alias bash ###" >> $HOME/.bashrc - echo "alias $ALIAS=\"$SCRIPT_PATH/$SCRIPT_FILE_NAME\"" >> $HOME/.bashrc - echo >> $HOME/.bashrc - echo -e "\n ${LCY}$ALIAS${CRS} added to ${CYN}$HOME/.bashrc${CRS}\n" - fi - - elif [ "$ACTIVE_SHELL" == "fish" ] ; then - if [ "$(cat $HOME/.config/fish/config.fish | grep "source $HOME/.config/fish/$ALIAS.fish")" ] ; then - echo -e "\n ${LCY}$ALIAS${CRS} already present in ${CYN}$HOME/.config/fish/config.fish${CRS}\n" - - else - echo "### $APP_NAME_LONG Alias FISH ###" > $HOME/.config/fish/$ALIAS.fish - echo >> $HOME/.config/fish/$ALIAS.fish - echo "function $ALIAS" >> $HOME/.config/fish/$ALIAS.fish - echo " $SCRIPT_PATH/$SCRIPT_FILE_NAME \$argv" >> $HOME/.config/fish/$ALIAS.fish - echo "end" >> $HOME/.config/fish/$ALIAS.fish - echo >> $HOME/.config/fish/$ALIAS.fish - echo "source $HOME/.config/fish/$ALIAS.fish" >> $HOME/.config/fish/config.fish - echo -e "\n ${LCY}$ALIAS ${CRS}added to ${CYN}$HOME/.config/fish/config.fish${CRS}\n" - fi - - else - echo -e "\n ${LCY}$ACTIVE_SHELL${RED}shell is not yet supported!${CRS}\n" - echo -e " ${CRS}Working implementation are available for bash, zsh & fish!${CRS}\n" - fi -} - -#################### 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" - exit - - elif [ -z "$LOCAL_VERSION" ] ; then - echo -e "\n ${RED}Empty version tag from ${CYN}local AppImage${RED}! Can't compare, exiting...${CRS}\n" - 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 - echo -e "\n ${LCY}$APP_NAME_LONG is updatable!${CRS}\n" - app_version_info - - while true ; do - read -p " Download and update $APP_NAME_LONG from $APP_SOURCE? (Y/n) : " CONFIRM - - if [[ "$CONFIRM" == "" || "$CONFIRM" == "y" || "$CONFIRM" == "Y" ]] ; then - DOWNLOAD_URL=$(curl -s $APP_SOURCE_URL | grep "browser_download_url" | grep "$ARCH.$FILE_EXTENSION" | grep -v "zsync" | tr -d \" | awk '{print $2}') - APP_SOURCE_FILENAME=$(curl -s $APP_SOURCE_URL | grep "browser_download_url" | grep "$ARCH.$FILE_EXTENSION" | grep -v "zsync" | tr -d \" | awk '{print $2}' | awk -F'/' '{print $9}') - mkdir -p $TMP - echo -e "\n - Downloading ${CYN}$APP_SOURCE_FILENAME${CRS}..." - wget -P $TMP $DOWNLOAD_URL -q - ${BACKUP_METHOD}_backup - chmod +x $TMP/$APP_SOURCE_FILENAME - mv $TMP/$APP_SOURCE_FILENAME $INSTALL_PATH/$APP_NAME.$FILE_EXTENSION - sed -i "s|X-AppImage-Version=.*|X-AppImage-Version=$($INSTALL_PATH/$APP_NAME.$FILE_EXTENSION --version | awk '{print $2}')|" $LAUNCHER_PATH/$APP_NAME.desktop - echo -e " ${GRN}$APP_NAME_LONG is up-to-date!${CRS}\n" - break - - elif [[ "$CONFIRM" == "n" || "$CONFIRM" == "N" ]] ; then - echo -e "\n ${RED}Cancelled!${CRS}\n" - exit - - else - echo -e "\n ${YEL}Invalid response!${CRS}\n" - fi - done - - else - echo -e "\n ${RED}Version tags malformed or you are using a Beta version!${CRS}\n" - app_version_info - echo -e " ${RED}Update failed... Exiting...${CRS}\n" - exit - fi -} - -#################### BACKUP #################### -call_backup() { - 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 - read -p " Overwrite backup? (y/N) : " OVERWRITE_BACKUP - - if [[ "$OVERWRITE_BACKUP" == "" || "$OVERWRITE_BACKUP" == "n" || "$OVERWRITE_BACKUP" == "N" ]] ; then - echo -e "\n ${YEL}Skipping backup process...${CRS}\n" - break - - elif [[ "$OVERWRITE_BACKUP" == "y" || "$OVERWRITE_BACKUP" == "Y" ]] ; then - echo -e "\n ${YEL}Overwriting backup...${CRS}" - 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 - 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 - - if [ -d "$BACKUP_ITEM" ] ; then - mkdir -p $TMP/backup - cp -r $BACKUP_ITEM $TMP/backup - - elif [ -f "$BACKUP_ITEM" ] ; then - mkdir -p $TMP/backup - cp $BACKUP_ITEM $TMP/backup - fi - done - - backup_logger -} - -script_backup() { - if [ -d "$SCRIPT_PATH" ] ; then - BACKUPABLE=("$SCRIPT_PATH/$SCRIPT_FILE_NAME" "$SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME") - echo -e "\n - ${CRS}Collecting files for ${CYN}$BACKUP_METHOD${CRS} backup...${CRS}" - backup_file_collector - pack_backup - - else - echo -e " ${YEL}Nothing to back up...${CRS}" - fi -} - -app_backup() { - if [ -f "$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION" ] ; then - BACKUPABLE=("$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION") - echo -e "\n - ${CRS}Collecting files for ${CYN}$BACKUP_METHOD${CRS} backup...${CRS}" - backup_file_collector - pack_backup - - else - echo -e " ${YEL}Nothing to back up...${CRS}" - fi -} - -config_backup() { - if [[ -d "$LAUNCHER_PATH" || -d $APP_CONFIG_PATH ]] ; then - BACKUPABLE=("$LAUNCHER_PATH/$APP_NAME.desktop" "$APP_CONFIG_PATH") - echo -e "\n - ${CRS}Collecting files for ${CYN}$BACKUP_METHOD${CRS} backup...${CRS}" - backup_file_collector - pack_backup - - else - echo -e " ${YEL}Nothing to back up...${CRS}" - fi -} - -full_backup() { - if [[ -d "$INSTALL_PATH" || -d "$SCRIPT_PATH" || -d $APP_CONFIG_PATH ]] ; then - BACKUPABLE=("$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") - echo -e "\n - ${CRS}Collecting files for ${CYN}$BACKUP_METHOD${CRS} backup...${CRS}" - backup_file_collector - pack_backup - - else - echo -e " ${YEL}Nothing to back up...${CRS}" - fi -} - -pack_backup() { - if [ -d "$TMP/backup" ] ; then - CWD=$(pwd) - cd $TMP/backup - - if [[ -f "*.sh" ]] ; then - chmod -x *.sh - - elif [[ -f "*.$FILE_EXTENSION" ]] ; then - chmod -x *.$FILE_EXTENSION - fi - - if [ "$BACKUP_COMPRESSION_OVERRIDE" ] ; then - BACKUP_COMPRESSION=$BACKUP_COMPRESSION_OVERRIDE - - else - COMPRESSION_METHOD=("pbzip2" "gzip" "bzip2" "zip") - - until [ "$BACKUP_COMPRESSION" ] ; do - for COMPRESSION_TYPE in "${COMPRESSION_METHOD[@]}" ; do - - if command -v $COMPRESSION_TYPE > /dev/null 2>&1 ; then - BACKUP_COMPRESSION=$COMPRESSION_TYPE - break - fi - done - done - fi - - echo -e "\n - ${CRS}Packing backup archive with ${CYN}$BACKUP_COMPRESSION${CRS}...${CRS}\n" - - if [ "$BACKUP_COMPRESSION" == "pbzip2" ] ; then - tar -cf $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar * > /dev/null 2>&1 - pbzip2 $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar - mkdir -p $BACKUP_PATH - mv $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar.bz2 $BACKUP_PATH - cd $TMP && rm -rf backup - - elif [ "$BACKUP_COMPRESSION" == "gzip" ] ; then - tar -cf $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar * > /dev/null 2>&1 - gzip $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar - mkdir -p $BACKUP_PATH - mv $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar.gz $BACKUP_PATH - cd $TMP && rm -rf backup - - elif [ "$BACKUP_COMPRESSION" == "bzip2" ] ; then - tar -cf $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar * > /dev/null 2>&1 - bzip2 $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar - mkdir -p $BACKUP_PATH - mv $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar.bz2 $BACKUP_PATH - cd $TMP && rm -rf backup - - elif [ "$BACKUP_COMPRESSION" == "zip" ] ; then - tar -cf $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar * > /dev/null 2>&1 - zip -r $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar.zip $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar > /dev/null 2>&1 - mkdir -p $BACKUP_PATH - mv $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar.zip $BACKUP_PATH - cd $TMP && rm -rf backup - - else - echo -e " ${YEL}No supported compression method detected! Copying backup uncompressed...${CRS}\n" - mkdir -p $BACKUP_PATH - mv $TMP/backup $BACKUP_PATH/$APP_NAME.$BACKUP_METHOD.backup_$DATE - cd $TMP && rm -rf backup - fi - - echo -e " - ${CRS}Backup stored in ${CYN}$BACKUP_PATH${CRS}...${CRS}\n" - cd $CWD - 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 - 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 - - while true ; do - read -p " Remove $APP_NAME_LONG incl. backups, configuration and launcher? (Y/n) : " CONFIRM_REMOVE - - if [[ "$CONFIRM_REMOVE" == "" || "$CONFIRM_REMOVE" == "y" || "$CONFIRM_REMOVE" == "Y" ]] ; then - REMOVABLE=("$INSTALL_PATH" "$LAUNCHER_PATH/$APP_NAME.desktop" "$APP_CONFIG_PATH" "$SCRIPT_PATH/$SCRIPT_FILE_NAME" "$SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME") - echo -e "\n - ${CRS}Removing ${CYN}$APP_NAME_LONG${CRS} files, directories and configuration...${CRS}" - - for RM_PATH in "${REMOVABLE[@]}" ; do - if [[ -f "$RM_PATH" || -d "$RM_PATH" ]] ; then - rm -rf "$RM_PATH" - fi - done - - shell_check - - if [ "$ACTIVE_SHELL" == "zsh" ] ; then - if [ "$(cat $HOME/.zshrc | grep "$ALIAS")" ] ; then - sed -i "/$APP_NAME_LONG/d" $HOME/.zshrc - sed -i "/$ALIAS/d" $HOME/.zshrc - echo -e "\n - Alias removed from ${CYN}$ACTIVE_SHELL${CRS}" - fi - - elif [ "$ACTIVE_SHELL" == "bash" ] ; then - if [ "$(cat $HOME/.bashrc | grep "$ALIAS")" ] ; then - sed -i "/$APP_NAME_LONG/d" $HOME/.bashrc - sed -i "/$ALIAS/d" $HOME/.bashrc - echo -e "\n - Alias removed from ${CYN}$ACTIVE_SHELL${CRS}" - fi - - elif [ "$ACTIVE_SHELL" == "fish" ] ; then - if [ "$(cat $HOME/.config/fish/config.fish | grep "source $HOME/.config/fish/$ALIAS.fish")" ] ; then - sed -i "/$ALIAS/d" $HOME/.config/fish/config.fish - rm $HOME/.config/fish/$ALIAS.fish - echo -e "\n - Alias removed from ${CYN}$ACTIVE_SHELL${CRS}" - fi - fi - - echo -e "\n ${YEL}$APP_NAME_LONG removed!${CRS}\n" - break - - elif [[ "$CONFIRM_REMOVE" == "n" || "$CONFIRM_REMOVE" == "N" ]] ; then - echo -e "\n ${RED}Cancelled!${CRS}" - exit - - else - echo -e "\n ${YEL}Invalid response!${CRS}\n" - fi - done - - else - echo -e " ${RED}Can't remove $APP_NAME_LONG! ${CYN}$INSTALL_PATH ${RED}directory not found...${CRS}\n" - exit - fi -} - -#################### SCRIPT VERSION #################### -script_version() { - echo -e "\n ${CYN}$APP_NAME_LONG Helper Script Version : ${CRS}$SCRIPT_VERSION\n" -} - -#################### UPDATE SCRIPT #################### -scrip_version_info() { - echo -e " - ${CYN}Local Version :\t${CRS}$SCRIPT_VERSION" - echo -e " - ${CYN}Remote Version :\t${CRS}$REMOTE_SCRIPT_VERSION" - echo -e " - ${CYN}Update Branch :\t${CRS}$REMOTE_REPO_BRANCH\n" -} - -update_script() { - if ! [ -f "$SCRIPT_PATH/$SCRIPT_FILE_NAME" ] ; then - echo -e "\n ${YEL}$SCRIPT_FILE_NAME not found...${CRS}" - - while true ; do - echo - 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 - 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" - break - - elif [[ "$CONFIRM_SCRIPT_INSTALL" == "n" || "$CONFIRM_SCRIPT_INSTALL" == "N" ]] ; then - echo -e " ${RED}Cancelled!${CRS}\n" - exit - - else - echo -e " ${YEL}Invalid response!${CRS}\n" - fi - done - fi - - REMOTE_SCRIPT_VERSION=$(curl -s $REMOTE_SCRIPT_URL | grep -m 1 "SCRIPT_VERSION" | tr -d 'SCRIPT_VERSION="') - - ### 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" - 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" - exit - fi - - ### COMPARE LOCAL & REMOTE VERSION - SCRIPT_VERSION_NUM=$(echo $SCRIPT_VERSION | tr -d .) - REMOTE_SCRIPT_VERSION_NUM=$(echo $REMOTE_SCRIPT_VERSION | tr -d .) - - if [ "$REMOTE_SCRIPT_VERSION" == "$SCRIPT_VERSION" ] ; then - echo -e "\n ${GRN}$SCRIPT_FILE_NAME is already up-to-date!${CRS}\n" - - elif [ "$REMOTE_SCRIPT_VERSION_NUM" -gt "$SCRIPT_VERSION_NUM" ] ; then - echo -e "\n ${LCY}$SCRIPT_FILE_NAME is updatable!${CRS}\n" - scrip_version_info - - while true ; do - read -p " Update $SCRIPT_FILE_NAME? (Y/n) : " CONFIRM_SCRIPT_UPDATE - - if [[ "$CONFIRM_SCRIPT_UPDATE" == "" || "$CONFIRM_SCRIPT_UPDATE" == "y" || "$CONFIRM_SCRIPT_UPDATE" == "Y" ]] ; then - if ! [ -d "$BACKUP_PATH" ] ; then - mkdir -p $BACKUP_PATH - fi - mv $SCRIPT_PATH/$SCRIPT_FILE_NAME $BACKUP_PATH/$SCRIPT_FILE_NAME.old - mv $SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME $BACKUP_PATH/$AUTO_SCRIPT_FILE_NAME.old - 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 " ${GRN}$SCRIPT_FILE_NAME is up-to-date!${CRS}" - break - - elif [[ "$CONFIRM_SCRIPT_UPDATE" == "n" || "$CONFIRM_SCRIPT_UPDATE" == "N" ]] ; then - echo -e "\n ${RED}Cancelled!${CRS}\n" - break - - else - echo -e "\n ${YEL}Invalid response!${CRS}\n" - fi - done - - else - echo -e "\n ${RED}Version tags malformed or you are using a Beta version!${CRS}\n" - scrip_version_info - echo -e " ${RED}Updating script failed...${CRS}\n" - fi -} - -#################### 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" -} - -compare_version() { - 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}') - - if [ -z "$APP_SOURCE_VERSION" ] ; then - 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}\n" - exit - fi - - LOCAL_VERSION_NUM=$(echo $LOCAL_VERSION | tr -d .) - APP_SOURCE_VERSION_NUM=$(echo $APP_SOURCE_VERSION | tr -d .) - - if [ "$APP_SOURCE_VERSION" == "$LOCAL_VERSION" ] ; then - echo -e "\n ${GRN}$APP_NAME_LONG is up-to-date!${CRS}\n" - app_version_info - - elif [ "$APP_SOURCE_VERSION_NUM" -gt "$LOCAL_VERSION_NUM" ] ; then - echo -e "\n ${LCY}$APP_NAME_LONG is updatable!${CRS}\n" - app_version_info - - else - echo -e "\n ${RED}Version tags malformed or you are using a Beta version!${CRS}\n" - app_version_info - fi -} - -#################### 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 "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" -<<<<<<< HEAD - echo -e "\t-B\tRestore $APP_NAME_LONG & configuration from backup" -======= - #echo -e "\t-B\tRestore $APP_NAME_LONG & configuration from backup" ->>>>>>> main - echo -e "\t-r\tRemove $APP_NAME_LONG" - echo -e "\t-c\tCompare local to remote version" - echo -e "\t-s\tShow script version" - echo -e "\t-S\tUpdate $SCRIPT_FILE_NAME" - echo -e "\t-h\tPrint this help page\n" - echo -e "Configured directories:\n" - echo -e "\t${CYN}${INSTALL_PATH}${CRS}\t\tInstall location" - echo -e "\t${CYN}${LAUNCHER_PATH}${CRS}\tLauncher location" - echo -e "\t${CYN}${SCRIPT_PATH}${CRS}\t\t\tScript location\n" -} - -#################### EXIT CLEAN #################### -exit_clean() { - if [ -d "$TMP" ] ; then - rm -rf $TMP - fi - - exit -} - -########################### MAIN ########################### - -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}" - help - exit - fi - - case $OPTION in - i) - TARGET="INSTALL" - echo -e "\n ${YEL}Installing $APP_NAME_LONG...${CRS}\n" - if [ "$#" -gt "1" ] ; then - ALL_PARAMETER=$@ - - for PARAMETER in ${ALL_PARAMETER[@]} ; do - if [ -d "$PARAMETER" ] ; then - INSTALL_PATH=$PARAMETER - fi - done - fi - dependency_check - arch_check - path_correction - install_application - exit_clean ;; - - l) - echo -e "\n ${YEL}Adding $APP_NAME_LONG launcher...${CRS}" - dependency_check - local_check - add_launcher - exit_clean ;; - - a) - echo -e "\n ${YEL}Adding alias...${CRS}" - if [ "$#" -gt "1" ] ; then - ALL_PARAMETER=$@ - - for PARAMETER in ${ALL_PARAMETER[@]} ; do - if [ "$PARAMETER" ] ; then - ALIAS=$PARAMETER - fi - done - fi - shell_check - add_alias - exit ;; - - u) - echo -e "\n ${YEL}Updating $APP_NAME_LONG...${CRS}" - dependency_check - arch_check - local_check - update_application - exit_clean ;; - - b) - TARGET="BACKUP" - echo -e "\n ${YEL}Backing up $APP_NAME_LONG...${CRS}" - if [ "$#" -gt "1" ] ; then - ALL_PARAMETER=$@ - - for PARAMETER in ${ALL_PARAMETER[@]} ; do - if [[ "$PARAMETER" == "script" || "$PARAMETER" == "config" || "$PARAMETER" == "app" || "$PARAMETER" == "full" ]] ; then - BACKUP_METHOD=$PARAMETER - - elif [[ "$PARAMETER" == "pbzip2" || "$PARAMETER" == "gzip" || "$PARAMETER" == "bzip2" || "$PARAMETER" == "zip" ]] ; then - BACKUP_COMPRESSION_OVERRIDE=$PARAMETER - - elif [[ -d "$PARAMETER" || -d "$(pwd)/$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 ;; - - r) - echo -e "\n ${YEL}Removing $APP_NAME_LONG...${CRS}\n" - remove_application - exit ;; - - c) - echo -e "\n ${YEL}Comparing remote to local version...${CRS}" - dependency_check - local_check - compare_version - exit_clean ;; - - s) - script_version - exit ;; - - S) - echo -e "\n ${YEL}Updating script...${CRS}" - dependency_check - update_script - exit_clean ;; - - h) - help - exit ;; - - *) - echo -e "\n${YEL}Option ${RED}$1${YEL} not recognized... Refer to help below!${CRS}" - help - exit ;; - esac -done - -## ENVIRONMENT CHECK -dependency_check -arch_check - -## CHECK LOCAL INSTALL -local_check - -## UPDATE -update_application - -## CLEAN -exit_clean diff --git a/helium_helper_BASE_10032.sh b/helium_helper_BASE_10032.sh deleted file mode 100644 index ec36448..0000000 --- a/helium_helper_BASE_10032.sh +++ /dev/null @@ -1,825 +0,0 @@ -#!/bin/bash -# Helium BOWSER INSTALL & UPDATE SCRIPT ---> INTERACTIVE -########## PREREQUISITES ########### -set -e - -## SOME COLOR -CYN="\e[0;36m" -YEL="\e[0;33m" -RED="\e[0;31m" -GRN="\e[0;32m" -LCY="\e[1;36m" -WHT="\e[1;37m" -CRS="\e[0m" - -## GLOBAL VARIABLES -APP_NAME="Helium" -APP_NAME_LONG="Helium Web Browser" -FILE_EXTENSION="AppImage" -APP_SOURCE="GitHub" -ARCH_OVERRIDE="" -BACKUP_METHOD="full" -BACKUP_COMPRESSION_OVERRIDE="" -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" -DATE=$(date +"%d%m%y") - -## LOCATIONS -TMP=/tmp/$APP_NAME -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/applications -SCRIPT_PATH=$HOME/.local/bin - -## REMOTE LOCATIONS -REMOTE_REPO_BRANCH="main" -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 ########### - -### DEPENDENCIES -cmd_query() { - if ! command -v $PACKAGE > /dev/null 2>&1 ; then - echo " - $PACKAGE" >> $TMP/missingDeps - fi -} - -dependency_check () { - DEPENDENCIES=("curl" "wget" "tar") - mkdir -p $TMP - - for PACKAGE in "${DEPENDENCIES[@]}" ; do - cmd_query "$PACKAGE" - - 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" - exit_clean - fi -} - -### SHELL CHECK -shell_query() { - if [ "$(echo $SHELL | grep "$SHELL_OPTION")" ] ; then - ACTIVE_SHELL=$SHELL_OPTION - fi - -} - -shell_check() { - SHELLS=("bash" "fish" "zsh") - - for SHELL_OPTION in "${SHELLS[@]}" ; do - shell_query "$SHELL_OPTION" - done -} - -### ARCH CHECK -arch_check() { - if [ "$ARCH_OVERRIDE" ] ; then - ARCH=$ARCH_OVERRIDE - - else - ARCH=$(uname -m) - if [ "$ARCH" == "aarch64" ] ; then - ARCH="arm64" - - elif [ "$ARCH" == "amd64" ] ; then - ARCH="x86_64" - fi - fi - - if ! [[ "$ARCH" == "arm64" || "$ARCH" == "x86_64" ]] ; then - echo -e "\n ${CYN}$ARCH ${RED}unsupported! Only ${CYN}x86_68 ${RED}or ${CYN}arm64 ${RED}architecture are supported!${CRS}\n" - exit - fi -} - -### CHECK LOCAL INSTALL -local_check() { - if ! [ -d "$INSTALL_PATH" ] ; then - echo -e "\n ${YEL}$APP_NAME_LONG directory not found!${CRS}\n" - install_application - exit - - elif ! [ -f "$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION" ] ; then - echo -e "\n ${YEL}$APP_NAME_LONG directory found but no executable named ${CYN}$APP_NAME.$FILE_EXTENSION${YEL}!${CRS}\n" - install_application - exit - 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}" - update_application - exit - fi - - while true ; do - read -p " Download and install $APP_NAME_LONG from $APP_SOURCE? (Y/n) : " CONFIRM_INSTALL - - if [[ "$CONFIRM_INSTALL" == "" || "$CONFIRM_INSTALL" == "y" || "$CONFIRM_INSTALL" == "Y" ]] ; then - DOWNLOAD_URL=$(curl -s $APP_SOURCE_URL | grep "browser_download_url" | grep "$ARCH.$FILE_EXTENSION" | grep -v "zsync" | tr -d \" | awk '{print $2}') - APP_SOURCE_FILENAME=$(curl -s $APP_SOURCE_URL | grep "browser_download_url" | grep "$ARCH.$FILE_EXTENSION" | grep -v "zsync" | tr -d \" | awk '{print $2}' | awk -F'/' '{print $9}') - echo -e "\n - Downloading ${CYN}$APP_SOURCE_FILENAME${CRS}..." - wget -P $TMP $DOWNLOAD_URL -q - chmod +x $TMP/$APP_SOURCE_FILENAME - mkdir -p $INSTALL_PATH - mv $TMP/$APP_SOURCE_FILENAME $INSTALL_PATH/$APP_NAME.$FILE_EXTENSION - add_launcher - echo -e "\n ${GRN}$APP_NAME_LONG is installed!${CRS}\n" - break - - elif [[ "$CONFIRM_INSTALL" == "n" || "$CONFIRM_INSTALL" == "N" ]] ; then - echo -e "\n ${RED}Cancelled!${CRS}\n" - break - - else - echo -e "\n ${YEL}Invalid response!${CRS}\n" - fi - done -} - -### LAUNCHER -add_launcher() { - if [ -f "$LAUNCHER_PATH/$APP_NAME.desktop" ] ; then - echo -e "\n ${YEL}${APP_NAME}.desktop already exists!${CRS}" - - elif [ -f "$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION" ] ; then - while true ; do - echo - read -p " Add $APP_NAME_LONG launcher to $LAUNCHER_PATH? (Y/n) : " CONFIRM_LAUNCHER - - if [[ "$CONFIRM_LAUNCHER" == "" || "$CONFIRM_LAUNCHER" == "y" || "$CONFIRM_LAUNCHER" == "Y" ]] ; then - LAUNCHER_URL=$REMOTE_REPO_URL/assets/launcher/helium.desktop.template - ICON_URL=$REMOTE_REPO_URL/assets/icon/helium.png - AUTO_SCRIPT_URL=$REMOTE_REPO_URL/$AUTO_SCRIPT_FILE_NAME - LOCAL_VERSION=$($INSTALL_PATH/$APP_NAME.$FILE_EXTENSION --version | awk '{print $2}') - mkdir -p $LAUNCHER_PATH $SCRIPT_PATH $BACKUP_PATH $ASSET_PATH/icon - if ! [ -f "$SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME" ] ; then - echo -e "\n - Downloading ${CYN}$AUTO_SCRIPT_FILE_NAME${CRS}..." - wget -P $TMP $AUTO_SCRIPT_URL -q - chmod +x $TMP/$AUTO_SCRIPT_FILE_NAME - mv $TMP/$AUTO_SCRIPT_FILE_NAME $SCRIPT_PATH - fi - - echo -e "\n - Downloading ${CYN}launcher files${CRS}..." - wget -P $TMP $LAUNCHER_URL -q - wget -P $TMP $ICON_URL -q - sed -i "s|%APP_LOCATION%|$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION|" $TMP/helium.desktop.template - sed -i "s|%ICON_LOCATION%|$ASSET_PATH/icon/helium.png|" $TMP/helium.desktop.template - sed -i "s|%APP_VERSION%|$LOCAL_VERSION|" $TMP/helium.desktop.template - sed -i "s|%QUIET_UPDATE_SCRIPT%|$SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME|" $TMP/helium.desktop.template - sed -i "s|%SCRIPT_UPDATE%|$SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME -S|" $TMP/helium.desktop.template - sed -i "s|%OPEN_LOG_EDITOR%|$SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME -L|" $TMP/helium.desktop.template - mv $TMP/helium.desktop.template $LAUNCHER_PATH/$APP_NAME.desktop - mv $TMP/helium.png $ASSET_PATH/icon - echo -e "\n ${GRN}$APP_NAME_LONG launcher is set up!${CRS}" - break - - elif [[ "$CONFIRM_LAUNCHER" == "n" || "$CONFIRM_LAUNCHER" == "N" ]] ; then - echo -e " ${RED}Launcher not added!${CRS}" - break - - else - echo -e " ${YEL}Invalid response!${CRS}\n" - fi - done - - else - echo -e "\n ${RED}$APP_NAME_LONG AppImage not found! Can't add launcher...${CRS}" - install_application - exit - fi -} - -### ALIAS -add_alias() { - if ! [ -f "$SCRIPT_PATH/$SCRIPT_FILE_NAME" ] ; then - mkdir -p $SCRIPT_PATH - wget -P $TMP $REMOTE_SCRIPT_URL -q - chmod +x $TMP/$SCRIPT_FILE_NAME - mv $TMP/$SCRIPT_FILE_NAME $SCRIPT_PATH - fi - - if [ "$ACTIVE_SHELL" == "zsh" ] ; then - if [ "$(cat $HOME/.zshrc | grep "$ALIAS")" ] ; then - echo -e "\n ${LCY}$ALIAS${CRS} already present in ${CYN}$HOME/.zshrc${CRS}\n" - - else - echo "### $APP_NAME_LONG Alias zsh ###" >> $HOME/.zshrc - echo "alias $ALIAS=\"$SCRIPT_PATH/$SCRIPT_FILE_NAME\"" >> $HOME/.zshrc - echo >> $HOME/.zshrc - echo -e "\n ${LCY}$ALIAS${CRS} added to ${CYN}$HOME/.zshrc${CRS}\n" - fi - - elif [ "$ACTIVE_SHELL" == "bash" ] ; then - if [ "$(cat $HOME/.bashrc | grep "$ALIAS")" ] ; then - echo -e "\n ${LCY}$ALIAS${CRS} already present in ${CYN}$HOME/.bashrc${CRS}\n" - - else - echo "### $APP_NAME_LONG Alias bash ###" >> $HOME/.bashrc - echo "alias $ALIAS=\"$SCRIPT_PATH/$SCRIPT_FILE_NAME\"" >> $HOME/.bashrc - echo >> $HOME/.bashrc - echo -e "\n ${LCY}$ALIAS${CRS} added to ${CYN}$HOME/.bashrc${CRS}\n" - fi - - elif [ "$ACTIVE_SHELL" == "fish" ] ; then - if [ "$(cat $HOME/.config/fish/config.fish | grep "source $HOME/.config/fish/$ALIAS.fish")" ] ; then - echo -e "\n ${LCY}$ALIAS${CRS} already present in ${CYN}$HOME/.config/fish/config.fish${CRS}\n" - - else - echo "### $APP_NAME_LONG Alias FISH ###" > $HOME/.config/fish/$ALIAS.fish - echo >> $HOME/.config/fish/$ALIAS.fish - echo "function $ALIAS" >> $HOME/.config/fish/$ALIAS.fish - echo " $SCRIPT_PATH/$SCRIPT_FILE_NAME \$argv" >> $HOME/.config/fish/$ALIAS.fish - echo "end" >> $HOME/.config/fish/$ALIAS.fish - echo >> $HOME/.config/fish/$ALIAS.fish - echo "source $HOME/.config/fish/$ALIAS.fish" >> $HOME/.config/fish/config.fish - echo -e "\n ${LCY}$ALIAS ${CRS}added to ${CYN}$HOME/.config/fish/config.fish${CRS}\n" - fi - - else - echo -e "\n ${LCY}$ACTIVE_SHELL${RED}shell is not yet supported!${CRS}\n" - echo -e " ${CRS}Working implementation are available for bash, zsh & fish!${CRS}\n" - fi -} - -### 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}" - exit - - elif [ -z "$LOCAL_VERSION" ] ; then - 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 .) - - if [ "$APP_SOURCE_VERSION" == "$LOCAL_VERSION" ] ; then - echo -e "\n ${GRN}$APP_NAME_LONG is already up-to-date!${CRS}\n" - - elif [ "$APP_SOURCE_VERSION_NUM" -gt "$LOCAL_VERSION_NUM" ] ; then - echo -e "\n ${LCY}$APP_NAME_LONG is updatable!${CRS}\n" - app_version_info - - while true ; do - read -p " Download and update $APP_NAME_LONG from $APP_SOURCE? (Y/n) : " CONFIRM - - if [[ "$CONFIRM" == "" || "$CONFIRM" == "y" || "$CONFIRM" == "Y" ]] ; then - DOWNLOAD_URL=$(curl -s $APP_SOURCE_URL | grep "browser_download_url" | grep "$ARCH.$FILE_EXTENSION" | grep -v "zsync" | tr -d \" | awk '{print $2}') - APP_SOURCE_FILENAME=$(curl -s $APP_SOURCE_URL | grep "browser_download_url" | grep "$ARCH.$FILE_EXTENSION" | grep -v "zsync" | tr -d \" | awk '{print $2}' | awk -F'/' '{print $9}') - mkdir -p $TMP - echo -e "\n - Downloading ${CYN}$APP_SOURCE_FILENAME${CRS}..." - wget -P $TMP $DOWNLOAD_URL -q - ${BACKUP_METHOD}_backup - chmod +x $TMP/$APP_SOURCE_FILENAME - mv $TMP/$APP_SOURCE_FILENAME $INSTALL_PATH/$APP_NAME.$FILE_EXTENSION - sed -i "s|X-AppImage-Version=.*|X-AppImage-Version=$($INSTALL_PATH/$APP_NAME.$FILE_EXTENSION --version | awk '{print $2}')|" $LAUNCHER_PATH/$APP_NAME.desktop - echo -e " ${GRN}$APP_NAME_LONG is up-to-date!${CRS}\n" - break - - elif [[ "$CONFIRM" == "n" || "$CONFIRM" == "N" ]] ; then - echo -e "\n ${RED}Cancelled!${CRS}\n" - exit - - else - echo -e "\n ${YEL}Invalid response!${CRS}\n" - fi - done - - else - echo -e "\n ${RED}Version tags malformed or you are using a Beta version!${CRS}\n" - app_version_info - echo -e " ${RED}Update failed... Exiting...${CRS}\n" - exit - fi -} - -### BACKUP -call_backup() { - 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 - read -p " Overwrite backup? (y/N) : " OVERWRITE_BACKUP - - if [[ "$OVERWRITE_BACKUP" == "" || "$OVERWRITE_BACKUP" == "n" || "$OVERWRITE_BACKUP" == "N" ]] ; then - echo -e "\n ${YEL}Skipping backup process...${CRS}\n" - 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 - - else - ${BACKUP_METHOD}_backup - fi -} - -backup_file_collector() { - for BACKUP_ITEM in ${BACKUPABLE[@]} ; do - - if [ -d "$BACKUP_ITEM" ] ; then - mkdir -p $TMP/backup - cp -r $BACKUP_ITEM $TMP/backup - - elif [ -f "$BACKUP_ITEM" ] ; then - mkdir -p $TMP/backup - cp $BACKUP_ITEM $TMP/backup - fi - done -} - -script_backup() { - if [ -d "$SCRIPT_PATH" ] ; then - BACKUPABLE=("$SCRIPT_PATH/$SCRIPT_FILE_NAME" "$SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME") - echo -e "\n - ${CRS}Collecting files for ${CYN}$BACKUP_METHOD${CRS} backup...${CRS}" - backup_file_collector - pack_backup - - else - echo -e " ${YEL}Nothing to back up...${CRS}" - fi -} - -app_backup() { - if [ -f "$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION" ] ; then - BACKUPABLE=("$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION") - echo -e "\n - ${CRS}Collecting files for ${CYN}$BACKUP_METHOD${CRS} backup...${CRS}" - backup_file_collector - pack_backup - - else - echo -e " ${YEL}Nothing to back up...${CRS}" - fi -} - -config_backup() { - if [[ -d "$LAUNCHER_PATH" || -d $APP_CONFIG_PATH ]] ; then - BACKUPABLE=("$LAUNCHER_PATH/$APP_NAME.desktop" "$APP_CONFIG_PATH") - echo -e "\n - ${CRS}Collecting files for ${CYN}$BACKUP_METHOD${CRS} backup...${CRS}" - backup_file_collector - pack_backup - - else - echo -e " ${YEL}Nothing to back up...${CRS}" - fi -} - -full_backup() { - if [[ -d "$INSTALL_PATH" || -d "$SCRIPT_PATH" || -d $APP_CONFIG_PATH ]] ; then - BACKUPABLE=("$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") - echo -e "\n - ${CRS}Collecting files for ${CYN}$BACKUP_METHOD${CRS} backup...${CRS}" - backup_file_collector - pack_backup - - else - echo -e " ${YEL}Nothing to back up...${CRS}" - fi -} - -pack_backup() { - if [ -d "$TMP/backup" ] ; then - CWD=$(pwd) - cd $TMP/backup - - if [[ -f "*.sh" ]] ; then - chmod -x *.sh - - elif [[ -f "*.$FILE_EXTENSION" ]] ; then - chmod -x *.$FILE_EXTENSION - fi - - if [ "$BACKUP_COMPRESSION_OVERRIDE" ] ; then - BACKUP_COMPRESSION=$BACKUP_COMPRESSION_OVERRIDE - - else - COMPRESSION_METHOD=("pbzip2" "gzip" "bzip2" "zip") - - until [ "$BACKUP_COMPRESSION" ] ; do - for COMPRESSION_TYPE in ${COMPRESSION_METHOD[@]} ; do - - if [ "$(command -v $COMPRESSION_TYPE) > /dev/null 2>&1" ] ; then - BACKUP_COMPRESSION=$COMPRESSION_TYPE - break - fi - done - done - fi - - echo -e "\n - ${CRS}Packing backup archive with ${CYN}$BACKUP_COMPRESSION${CRS}...${CRS}\n" - - if [ "$BACKUP_COMPRESSION" == "pbzip2" ] ; then - tar -cf $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar * > /dev/null 2>&1 - pbzip2 $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar - mkdir -p $BACKUP_PATH - mv $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar.bz2 $BACKUP_PATH - cd $TMP && rm -rf backup - - elif [ "$BACKUP_COMPRESSION" == "gzip" ] ; then - tar -cf $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar * > /dev/null 2>&1 - gzip $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar - mkdir -p $BACKUP_PATH - mv $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar.gz $BACKUP_PATH - cd $TMP && rm -rf backup - - elif [ "$BACKUP_COMPRESSION" == "bzip2" ] ; then - tar -cf $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar * > /dev/null 2>&1 - bzip2 $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar - mkdir -p $BACKUP_PATH - mv $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar.bz2 $BACKUP_PATH - cd $TMP && rm -rf backup - - elif [ "$BACKUP_COMPRESSION" == "zip" ] ; then - tar -cf $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar * > /dev/null 2>&1 - zip -r $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar.zip $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar > /dev/null 2>&1 - mkdir -p $BACKUP_PATH - mv $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar.zip $BACKUP_PATH - cd $TMP && rm -rf backup - - else - echo -e " ${YEL}No supported compression method detected! Copying backup uncompressed...${CRS}\n" - mkdir -p $BACKUP_PATH - mv $TMP/backup $BACKUP_PATH/$APP_NAME.$BACKUP_METHOD.backup_$DATE - cd $TMP && rm -rf backup - fi - - echo -e " - ${CRS}Backup stored in ${CYN}$BACKUP_PATH${CRS}...${CRS}\n" - cd $CWD - fi -} - -### REMOVE -remove_application() { - if [ -d "$INSTALL_PATH" ] ; then - - while true ; do - read -p " Remove $APP_NAME_LONG incl. backups, configuration and launcher? (Y/n) : " CONFIRM_REMOVE - - if [[ "$CONFIRM_REMOVE" == "" || "$CONFIRM_REMOVE" == "y" || "$CONFIRM_REMOVE" == "Y" ]] ; then - REMOVABLE=("$INSTALL_PATH" "$LAUNCHER_PATH/$APP_NAME.desktop" "$APP_CONFIG_PATH" "$SCRIPT_PATH/$SCRIPT_FILE_NAME" "$SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME") - echo -e "\n - ${CRS}Removing ${CYN}$APP_NAME_LONG${CRS} files, directories and configuration...${CRS}" - - for RM_PATH in "${REMOVABLE[@]}" ; do - if [[ -f "$RM_PATH" || -d "$RM_PATH" ]] ; then - rm -rf "$RM_PATH" - fi - done - - shell_check - - if [ "$ACTIVE_SHELL" == "zsh" ] ; then - if [ "$(cat $HOME/.zshrc | grep "$ALIAS")" ] ; then - sed -i "/$APP_NAME_LONG/d" $HOME/.zshrc - sed -i "/$ALIAS/d" $HOME/.zshrc - echo -e "\n - Alias removed from ${CYN}$ACTIVE_SHELL${CRS}" - fi - - elif [ "$ACTIVE_SHELL" == "bash" ] ; then - if [ "$(cat $HOME/.bashrc | grep "$ALIAS")" ] ; then - sed -i "/$APP_NAME_LONG/d" $HOME/.bashrc - sed -i "/$ALIAS/d" $HOME/.bashrc - echo -e "\n - Alias removed from ${CYN}$ACTIVE_SHELL${CRS}" - fi - - elif [ "$ACTIVE_SHELL" == "fish" ] ; then - if [ "$(cat $HOME/.config/fish/config.fish | grep "source $HOME/.config/fish/$ALIAS.fish")" ] ; then - sed -i "/$ALIAS/d" $HOME/.config/fish/config.fish - rm $HOME/.config/fish/$ALIAS.fish - echo -e "\n - Alias removed from ${CYN}$ACTIVE_SHELL${CRS}" - fi - fi - - echo -e "\n ${YEL}$APP_NAME_LONG removed!${CRS}\n" - break - - elif [[ "$CONFIRM_REMOVE" == "n" || "$CONFIRM_REMOVE" == "N" ]] ; then - echo -e " ${RED}Cancelled!${CRS}" - exit - - else - echo -e " ${YEL}Invalid response!${CRS}\n" - fi - done - - else - echo -e " ${RED}Can't remove $APP_NAME_LONG! ${CYN}$INSTALL_PATH ${RED}directory not found...${CRS}\n" - exit - fi -} - -### SCRIPT VERSION -script_version() { - echo -e "\n ${CYN}$APP_NAME_LONG Helper Script Version : ${CRS}$SCRIPT_VERSION\n" -} - -### UPDATE SCRIPT -scrip_version_info() { - echo -e " - ${CYN}Local Version :\t${CRS}$SCRIPT_VERSION" - echo -e " - ${CYN}Remote Version :\t${CRS}$REMOTE_SCRIPT_VERSION" - echo -e " - ${CYN}Update Branch :\t${CRS}$REMOTE_REPO_BRANCH\n" -} - -update_script() { - if ! [ -f "$SCRIPT_PATH/$SCRIPT_FILE_NAME" ] ; then - echo -e "\n ${YEL}$SCRIPT_FILE_NAME not found...${CRS}" - - while true ; do - echo - 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 - 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}" - break - - elif [[ "$CONFIRM_SCRIPT_INSTALL" == "n" || "$CONFIRM_SCRIPT_INSTALL" == "N" ]] ; then - echo -e " ${RED}Cancelled!${CRS}\n" - exit - - else - echo -e " ${YEL}Invalid response!${CRS}\n" - fi - done - fi - - REMOTE_SCRIPT_VERSION=$(curl -s $REMOTE_SCRIPT_URL | grep -m 1 "SCRIPT_VERSION" | tr -d 'SCRIPT_VERSION="') - - ### 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}" - exit - - elif [ -z "$REMOTE_SCRIPT_VERSION" ] ; then - echo -e "\n ${RED}Empty version tag from ${CYN}remote script${RED}! Can't compare, exiting...${CRS}" - exit - fi - - ### COMPARE LOCAL & REMOTE VERSION - SCRIPT_VERSION_NUM=$(echo $SCRIPT_VERSION | tr -d .) - REMOTE_SCRIPT_VERSION_NUM=$(echo $REMOTE_SCRIPT_VERSION | tr -d .) - - if [ "$REMOTE_SCRIPT_VERSION" == "$SCRIPT_VERSION" ] ; then - echo -e "\n ${GRN}$SCRIPT_FILE_NAME is already up-to-date!${CRS}\n" - - elif [ "$REMOTE_SCRIPT_VERSION_NUM" -gt "$SCRIPT_VERSION_NUM" ] ; then - echo -e "\n ${LCY}$SCRIPT_FILE_NAME is updatable!${CRS}\n" - scrip_version_info - - 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 - mkdir -p $BACKUP_PATH - fi - mv $SCRIPT_PATH/$SCRIPT_FILE_NAME $BACKUP_PATH/$SCRIPT_FILE_NAME.old - mv $SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME $BACKUP_PATH/$AUTO_SCRIPT_FILE_NAME.old - 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 " ${GRN}$SCRIPT_FILE_NAME is up-to-date!${CRS}" - break - - elif [[ "$CONFIRM_SCRIPT_UPDATE" == "n" || "$CONFIRM_SCRIPT_UPDATE" == "N" ]] ; then - echo -e " ${RED}Cancelled!${CRS}\n" - break - - else - echo -e " ${YEL}Invalid response!${CRS}\n" - fi - done - - else - echo -e "\n ${RED}Version tags malformed or you are using a Beta version!${CRS}\n" - scrip_version_info - echo -e " ${RED}Updating script failed...${CRS}\n" - fi -} - -### 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" -} - -compare_version() { - 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}') - - if [ -z "$APP_SOURCE_VERSION" ] ; then - 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}\n" - exit - fi - - LOCAL_VERSION_NUM=$(echo $LOCAL_VERSION | tr -d .) - APP_SOURCE_VERSION_NUM=$(echo $APP_SOURCE_VERSION | tr -d .) - - if [ "$APP_SOURCE_VERSION" == "$LOCAL_VERSION" ] ; then - echo -e "\n ${GRN}$APP_NAME_LONG is up-to-date!${CRS}\n" - app_version_info - - elif [ "$APP_SOURCE_VERSION_NUM" -gt "$LOCAL_VERSION_NUM" ] ; then - echo -e "\n ${LCY}$APP_NAME_LONG is updatable!${CRS}\n" - app_version_info - - else - echo -e "\n ${RED}Version tags malformed or you are using a Beta version!${CRS}\n" - app_version_info - fi -} - -### 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 "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-r\tRemove $APP_NAME_LONG" - echo -e "\t-c\tCompare local to remote version" - echo -e "\t-s\tShow script version" - echo -e "\t-S\tUpdate $SCRIPT_FILE_NAME" - echo -e "\t-h\tPrint this help page\n" - echo -e "Configured directories:\n" - echo -e "\t${CYN}${INSTALL_PATH}${CRS}\t\tInstall location" - echo -e "\t${CYN}${LAUNCHER_PATH}${CRS}\tLauncher location" - echo -e "\t${CYN}${SCRIPT_PATH}${CRS}\t\t\tScript location\n" -} - -### EXIT CLEAN -exit_clean() { - if [ -d "$TMP" ] ; then - rm -rf $TMP - fi - - exit -} - -########## MAIN ########## - -## 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}" - help - exit - fi - - case $OPTION in - i) - echo -e "\n ${YEL}Installing $APP_NAME_LONG...${CRS}\n" - if [ "$#" -gt "1" ] ; then - ALL_PARAMETER=$@ - - for PARAMETER in ${ALL_PARAMETER[@]} ; do - if [ -d "$PARAMETER" ] ; then - INSTALL_PATH=$PARAMETER - fi - done - fi - dependency_check - arch_check - install_application - exit_clean ;; - - l) - echo -e "\n ${YEL}Adding $APP_NAME_LONG launcher...${CRS}" - dependency_check - local_check - add_launcher - exit_clean ;; - - a) - echo -e "\n ${YEL}Adding alias...${CRS}" - if [ "$#" -gt "1" ] ; then - ALL_PARAMETER=$@ - - for PARAMETER in ${ALL_PARAMETER[@]} ; do - if [ "$PARAMETER" ] ; then - ALIAS=$PARAMETER - fi - done - fi - shell_check - add_alias - exit ;; - - u) - echo -e "\n ${YEL}Updating $APP_NAME_LONG...${CRS}" - dependency_check - arch_check - local_check - update_application - exit_clean ;; - - b) - echo -e "\n ${YEL}Backing up $APP_NAME_LONG...${CRS}" - if [ "$#" -gt "1" ] ; then - ALL_PARAMETER=$@ - - for PARAMETER in ${ALL_PARAMETER[@]} ; do - if [[ "$PARAMETER" == "script" || "$PARAMETER" == "config" || "$PARAMETER" == "app" || "$PARAMETER" == "full" ]] ; then - BACKUP_METHOD=$PARAMETER - - elif [[ "$PARAMETER" == "pbzip2" || "$PARAMETER" == "gzip" || "$PARAMETER" == "bzip2" || "$PARAMETER" == "zip" ]] ; then - BACKUP_COMPRESSION_OVERRIDE=$PARAMETER - - elif [ -d "$PARAMETER" ] ; then - BACKUP_PATH=$PARAMETER - fi - done - fi - call_backup - exit ;; - - r) - echo -e "\n ${YEL}Removing $APP_NAME_LONG...${CRS}\n" - remove_application - exit ;; - - c) - echo -e "\n ${YEL}Comparing remote to local version...${CRS}" - dependency_check - local_check - compare_version - exit_clean ;; - - s) - script_version - exit ;; - - S) - echo -e "\n ${YEL}Updating script...${CRS}" - dependency_check - update_script - exit_clean ;; - - h) - help - exit ;; - - *) - echo -e "\n${YEL}Option ${RED}$1${YEL} not recognized... Refer to help below!${CRS}" - help - exit ;; - esac -done - -## ENVIRONMENT CHECK -dependency_check -arch_check - -## CHECK LOCAL INSTALL -local_check - -## UPDATE -update_application - -## CLEAN -exit_clean diff --git a/helium_helper_BASE_9867.sh b/helium_helper_BASE_9867.sh deleted file mode 100644 index ec36448..0000000 --- a/helium_helper_BASE_9867.sh +++ /dev/null @@ -1,825 +0,0 @@ -#!/bin/bash -# Helium BOWSER INSTALL & UPDATE SCRIPT ---> INTERACTIVE -########## PREREQUISITES ########### -set -e - -## SOME COLOR -CYN="\e[0;36m" -YEL="\e[0;33m" -RED="\e[0;31m" -GRN="\e[0;32m" -LCY="\e[1;36m" -WHT="\e[1;37m" -CRS="\e[0m" - -## GLOBAL VARIABLES -APP_NAME="Helium" -APP_NAME_LONG="Helium Web Browser" -FILE_EXTENSION="AppImage" -APP_SOURCE="GitHub" -ARCH_OVERRIDE="" -BACKUP_METHOD="full" -BACKUP_COMPRESSION_OVERRIDE="" -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" -DATE=$(date +"%d%m%y") - -## LOCATIONS -TMP=/tmp/$APP_NAME -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/applications -SCRIPT_PATH=$HOME/.local/bin - -## REMOTE LOCATIONS -REMOTE_REPO_BRANCH="main" -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 ########### - -### DEPENDENCIES -cmd_query() { - if ! command -v $PACKAGE > /dev/null 2>&1 ; then - echo " - $PACKAGE" >> $TMP/missingDeps - fi -} - -dependency_check () { - DEPENDENCIES=("curl" "wget" "tar") - mkdir -p $TMP - - for PACKAGE in "${DEPENDENCIES[@]}" ; do - cmd_query "$PACKAGE" - - 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" - exit_clean - fi -} - -### SHELL CHECK -shell_query() { - if [ "$(echo $SHELL | grep "$SHELL_OPTION")" ] ; then - ACTIVE_SHELL=$SHELL_OPTION - fi - -} - -shell_check() { - SHELLS=("bash" "fish" "zsh") - - for SHELL_OPTION in "${SHELLS[@]}" ; do - shell_query "$SHELL_OPTION" - done -} - -### ARCH CHECK -arch_check() { - if [ "$ARCH_OVERRIDE" ] ; then - ARCH=$ARCH_OVERRIDE - - else - ARCH=$(uname -m) - if [ "$ARCH" == "aarch64" ] ; then - ARCH="arm64" - - elif [ "$ARCH" == "amd64" ] ; then - ARCH="x86_64" - fi - fi - - if ! [[ "$ARCH" == "arm64" || "$ARCH" == "x86_64" ]] ; then - echo -e "\n ${CYN}$ARCH ${RED}unsupported! Only ${CYN}x86_68 ${RED}or ${CYN}arm64 ${RED}architecture are supported!${CRS}\n" - exit - fi -} - -### CHECK LOCAL INSTALL -local_check() { - if ! [ -d "$INSTALL_PATH" ] ; then - echo -e "\n ${YEL}$APP_NAME_LONG directory not found!${CRS}\n" - install_application - exit - - elif ! [ -f "$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION" ] ; then - echo -e "\n ${YEL}$APP_NAME_LONG directory found but no executable named ${CYN}$APP_NAME.$FILE_EXTENSION${YEL}!${CRS}\n" - install_application - exit - 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}" - update_application - exit - fi - - while true ; do - read -p " Download and install $APP_NAME_LONG from $APP_SOURCE? (Y/n) : " CONFIRM_INSTALL - - if [[ "$CONFIRM_INSTALL" == "" || "$CONFIRM_INSTALL" == "y" || "$CONFIRM_INSTALL" == "Y" ]] ; then - DOWNLOAD_URL=$(curl -s $APP_SOURCE_URL | grep "browser_download_url" | grep "$ARCH.$FILE_EXTENSION" | grep -v "zsync" | tr -d \" | awk '{print $2}') - APP_SOURCE_FILENAME=$(curl -s $APP_SOURCE_URL | grep "browser_download_url" | grep "$ARCH.$FILE_EXTENSION" | grep -v "zsync" | tr -d \" | awk '{print $2}' | awk -F'/' '{print $9}') - echo -e "\n - Downloading ${CYN}$APP_SOURCE_FILENAME${CRS}..." - wget -P $TMP $DOWNLOAD_URL -q - chmod +x $TMP/$APP_SOURCE_FILENAME - mkdir -p $INSTALL_PATH - mv $TMP/$APP_SOURCE_FILENAME $INSTALL_PATH/$APP_NAME.$FILE_EXTENSION - add_launcher - echo -e "\n ${GRN}$APP_NAME_LONG is installed!${CRS}\n" - break - - elif [[ "$CONFIRM_INSTALL" == "n" || "$CONFIRM_INSTALL" == "N" ]] ; then - echo -e "\n ${RED}Cancelled!${CRS}\n" - break - - else - echo -e "\n ${YEL}Invalid response!${CRS}\n" - fi - done -} - -### LAUNCHER -add_launcher() { - if [ -f "$LAUNCHER_PATH/$APP_NAME.desktop" ] ; then - echo -e "\n ${YEL}${APP_NAME}.desktop already exists!${CRS}" - - elif [ -f "$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION" ] ; then - while true ; do - echo - read -p " Add $APP_NAME_LONG launcher to $LAUNCHER_PATH? (Y/n) : " CONFIRM_LAUNCHER - - if [[ "$CONFIRM_LAUNCHER" == "" || "$CONFIRM_LAUNCHER" == "y" || "$CONFIRM_LAUNCHER" == "Y" ]] ; then - LAUNCHER_URL=$REMOTE_REPO_URL/assets/launcher/helium.desktop.template - ICON_URL=$REMOTE_REPO_URL/assets/icon/helium.png - AUTO_SCRIPT_URL=$REMOTE_REPO_URL/$AUTO_SCRIPT_FILE_NAME - LOCAL_VERSION=$($INSTALL_PATH/$APP_NAME.$FILE_EXTENSION --version | awk '{print $2}') - mkdir -p $LAUNCHER_PATH $SCRIPT_PATH $BACKUP_PATH $ASSET_PATH/icon - if ! [ -f "$SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME" ] ; then - echo -e "\n - Downloading ${CYN}$AUTO_SCRIPT_FILE_NAME${CRS}..." - wget -P $TMP $AUTO_SCRIPT_URL -q - chmod +x $TMP/$AUTO_SCRIPT_FILE_NAME - mv $TMP/$AUTO_SCRIPT_FILE_NAME $SCRIPT_PATH - fi - - echo -e "\n - Downloading ${CYN}launcher files${CRS}..." - wget -P $TMP $LAUNCHER_URL -q - wget -P $TMP $ICON_URL -q - sed -i "s|%APP_LOCATION%|$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION|" $TMP/helium.desktop.template - sed -i "s|%ICON_LOCATION%|$ASSET_PATH/icon/helium.png|" $TMP/helium.desktop.template - sed -i "s|%APP_VERSION%|$LOCAL_VERSION|" $TMP/helium.desktop.template - sed -i "s|%QUIET_UPDATE_SCRIPT%|$SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME|" $TMP/helium.desktop.template - sed -i "s|%SCRIPT_UPDATE%|$SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME -S|" $TMP/helium.desktop.template - sed -i "s|%OPEN_LOG_EDITOR%|$SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME -L|" $TMP/helium.desktop.template - mv $TMP/helium.desktop.template $LAUNCHER_PATH/$APP_NAME.desktop - mv $TMP/helium.png $ASSET_PATH/icon - echo -e "\n ${GRN}$APP_NAME_LONG launcher is set up!${CRS}" - break - - elif [[ "$CONFIRM_LAUNCHER" == "n" || "$CONFIRM_LAUNCHER" == "N" ]] ; then - echo -e " ${RED}Launcher not added!${CRS}" - break - - else - echo -e " ${YEL}Invalid response!${CRS}\n" - fi - done - - else - echo -e "\n ${RED}$APP_NAME_LONG AppImage not found! Can't add launcher...${CRS}" - install_application - exit - fi -} - -### ALIAS -add_alias() { - if ! [ -f "$SCRIPT_PATH/$SCRIPT_FILE_NAME" ] ; then - mkdir -p $SCRIPT_PATH - wget -P $TMP $REMOTE_SCRIPT_URL -q - chmod +x $TMP/$SCRIPT_FILE_NAME - mv $TMP/$SCRIPT_FILE_NAME $SCRIPT_PATH - fi - - if [ "$ACTIVE_SHELL" == "zsh" ] ; then - if [ "$(cat $HOME/.zshrc | grep "$ALIAS")" ] ; then - echo -e "\n ${LCY}$ALIAS${CRS} already present in ${CYN}$HOME/.zshrc${CRS}\n" - - else - echo "### $APP_NAME_LONG Alias zsh ###" >> $HOME/.zshrc - echo "alias $ALIAS=\"$SCRIPT_PATH/$SCRIPT_FILE_NAME\"" >> $HOME/.zshrc - echo >> $HOME/.zshrc - echo -e "\n ${LCY}$ALIAS${CRS} added to ${CYN}$HOME/.zshrc${CRS}\n" - fi - - elif [ "$ACTIVE_SHELL" == "bash" ] ; then - if [ "$(cat $HOME/.bashrc | grep "$ALIAS")" ] ; then - echo -e "\n ${LCY}$ALIAS${CRS} already present in ${CYN}$HOME/.bashrc${CRS}\n" - - else - echo "### $APP_NAME_LONG Alias bash ###" >> $HOME/.bashrc - echo "alias $ALIAS=\"$SCRIPT_PATH/$SCRIPT_FILE_NAME\"" >> $HOME/.bashrc - echo >> $HOME/.bashrc - echo -e "\n ${LCY}$ALIAS${CRS} added to ${CYN}$HOME/.bashrc${CRS}\n" - fi - - elif [ "$ACTIVE_SHELL" == "fish" ] ; then - if [ "$(cat $HOME/.config/fish/config.fish | grep "source $HOME/.config/fish/$ALIAS.fish")" ] ; then - echo -e "\n ${LCY}$ALIAS${CRS} already present in ${CYN}$HOME/.config/fish/config.fish${CRS}\n" - - else - echo "### $APP_NAME_LONG Alias FISH ###" > $HOME/.config/fish/$ALIAS.fish - echo >> $HOME/.config/fish/$ALIAS.fish - echo "function $ALIAS" >> $HOME/.config/fish/$ALIAS.fish - echo " $SCRIPT_PATH/$SCRIPT_FILE_NAME \$argv" >> $HOME/.config/fish/$ALIAS.fish - echo "end" >> $HOME/.config/fish/$ALIAS.fish - echo >> $HOME/.config/fish/$ALIAS.fish - echo "source $HOME/.config/fish/$ALIAS.fish" >> $HOME/.config/fish/config.fish - echo -e "\n ${LCY}$ALIAS ${CRS}added to ${CYN}$HOME/.config/fish/config.fish${CRS}\n" - fi - - else - echo -e "\n ${LCY}$ACTIVE_SHELL${RED}shell is not yet supported!${CRS}\n" - echo -e " ${CRS}Working implementation are available for bash, zsh & fish!${CRS}\n" - fi -} - -### 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}" - exit - - elif [ -z "$LOCAL_VERSION" ] ; then - 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 .) - - if [ "$APP_SOURCE_VERSION" == "$LOCAL_VERSION" ] ; then - echo -e "\n ${GRN}$APP_NAME_LONG is already up-to-date!${CRS}\n" - - elif [ "$APP_SOURCE_VERSION_NUM" -gt "$LOCAL_VERSION_NUM" ] ; then - echo -e "\n ${LCY}$APP_NAME_LONG is updatable!${CRS}\n" - app_version_info - - while true ; do - read -p " Download and update $APP_NAME_LONG from $APP_SOURCE? (Y/n) : " CONFIRM - - if [[ "$CONFIRM" == "" || "$CONFIRM" == "y" || "$CONFIRM" == "Y" ]] ; then - DOWNLOAD_URL=$(curl -s $APP_SOURCE_URL | grep "browser_download_url" | grep "$ARCH.$FILE_EXTENSION" | grep -v "zsync" | tr -d \" | awk '{print $2}') - APP_SOURCE_FILENAME=$(curl -s $APP_SOURCE_URL | grep "browser_download_url" | grep "$ARCH.$FILE_EXTENSION" | grep -v "zsync" | tr -d \" | awk '{print $2}' | awk -F'/' '{print $9}') - mkdir -p $TMP - echo -e "\n - Downloading ${CYN}$APP_SOURCE_FILENAME${CRS}..." - wget -P $TMP $DOWNLOAD_URL -q - ${BACKUP_METHOD}_backup - chmod +x $TMP/$APP_SOURCE_FILENAME - mv $TMP/$APP_SOURCE_FILENAME $INSTALL_PATH/$APP_NAME.$FILE_EXTENSION - sed -i "s|X-AppImage-Version=.*|X-AppImage-Version=$($INSTALL_PATH/$APP_NAME.$FILE_EXTENSION --version | awk '{print $2}')|" $LAUNCHER_PATH/$APP_NAME.desktop - echo -e " ${GRN}$APP_NAME_LONG is up-to-date!${CRS}\n" - break - - elif [[ "$CONFIRM" == "n" || "$CONFIRM" == "N" ]] ; then - echo -e "\n ${RED}Cancelled!${CRS}\n" - exit - - else - echo -e "\n ${YEL}Invalid response!${CRS}\n" - fi - done - - else - echo -e "\n ${RED}Version tags malformed or you are using a Beta version!${CRS}\n" - app_version_info - echo -e " ${RED}Update failed... Exiting...${CRS}\n" - exit - fi -} - -### BACKUP -call_backup() { - 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 - read -p " Overwrite backup? (y/N) : " OVERWRITE_BACKUP - - if [[ "$OVERWRITE_BACKUP" == "" || "$OVERWRITE_BACKUP" == "n" || "$OVERWRITE_BACKUP" == "N" ]] ; then - echo -e "\n ${YEL}Skipping backup process...${CRS}\n" - 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 - - else - ${BACKUP_METHOD}_backup - fi -} - -backup_file_collector() { - for BACKUP_ITEM in ${BACKUPABLE[@]} ; do - - if [ -d "$BACKUP_ITEM" ] ; then - mkdir -p $TMP/backup - cp -r $BACKUP_ITEM $TMP/backup - - elif [ -f "$BACKUP_ITEM" ] ; then - mkdir -p $TMP/backup - cp $BACKUP_ITEM $TMP/backup - fi - done -} - -script_backup() { - if [ -d "$SCRIPT_PATH" ] ; then - BACKUPABLE=("$SCRIPT_PATH/$SCRIPT_FILE_NAME" "$SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME") - echo -e "\n - ${CRS}Collecting files for ${CYN}$BACKUP_METHOD${CRS} backup...${CRS}" - backup_file_collector - pack_backup - - else - echo -e " ${YEL}Nothing to back up...${CRS}" - fi -} - -app_backup() { - if [ -f "$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION" ] ; then - BACKUPABLE=("$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION") - echo -e "\n - ${CRS}Collecting files for ${CYN}$BACKUP_METHOD${CRS} backup...${CRS}" - backup_file_collector - pack_backup - - else - echo -e " ${YEL}Nothing to back up...${CRS}" - fi -} - -config_backup() { - if [[ -d "$LAUNCHER_PATH" || -d $APP_CONFIG_PATH ]] ; then - BACKUPABLE=("$LAUNCHER_PATH/$APP_NAME.desktop" "$APP_CONFIG_PATH") - echo -e "\n - ${CRS}Collecting files for ${CYN}$BACKUP_METHOD${CRS} backup...${CRS}" - backup_file_collector - pack_backup - - else - echo -e " ${YEL}Nothing to back up...${CRS}" - fi -} - -full_backup() { - if [[ -d "$INSTALL_PATH" || -d "$SCRIPT_PATH" || -d $APP_CONFIG_PATH ]] ; then - BACKUPABLE=("$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") - echo -e "\n - ${CRS}Collecting files for ${CYN}$BACKUP_METHOD${CRS} backup...${CRS}" - backup_file_collector - pack_backup - - else - echo -e " ${YEL}Nothing to back up...${CRS}" - fi -} - -pack_backup() { - if [ -d "$TMP/backup" ] ; then - CWD=$(pwd) - cd $TMP/backup - - if [[ -f "*.sh" ]] ; then - chmod -x *.sh - - elif [[ -f "*.$FILE_EXTENSION" ]] ; then - chmod -x *.$FILE_EXTENSION - fi - - if [ "$BACKUP_COMPRESSION_OVERRIDE" ] ; then - BACKUP_COMPRESSION=$BACKUP_COMPRESSION_OVERRIDE - - else - COMPRESSION_METHOD=("pbzip2" "gzip" "bzip2" "zip") - - until [ "$BACKUP_COMPRESSION" ] ; do - for COMPRESSION_TYPE in ${COMPRESSION_METHOD[@]} ; do - - if [ "$(command -v $COMPRESSION_TYPE) > /dev/null 2>&1" ] ; then - BACKUP_COMPRESSION=$COMPRESSION_TYPE - break - fi - done - done - fi - - echo -e "\n - ${CRS}Packing backup archive with ${CYN}$BACKUP_COMPRESSION${CRS}...${CRS}\n" - - if [ "$BACKUP_COMPRESSION" == "pbzip2" ] ; then - tar -cf $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar * > /dev/null 2>&1 - pbzip2 $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar - mkdir -p $BACKUP_PATH - mv $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar.bz2 $BACKUP_PATH - cd $TMP && rm -rf backup - - elif [ "$BACKUP_COMPRESSION" == "gzip" ] ; then - tar -cf $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar * > /dev/null 2>&1 - gzip $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar - mkdir -p $BACKUP_PATH - mv $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar.gz $BACKUP_PATH - cd $TMP && rm -rf backup - - elif [ "$BACKUP_COMPRESSION" == "bzip2" ] ; then - tar -cf $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar * > /dev/null 2>&1 - bzip2 $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar - mkdir -p $BACKUP_PATH - mv $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar.bz2 $BACKUP_PATH - cd $TMP && rm -rf backup - - elif [ "$BACKUP_COMPRESSION" == "zip" ] ; then - tar -cf $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar * > /dev/null 2>&1 - zip -r $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar.zip $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar > /dev/null 2>&1 - mkdir -p $BACKUP_PATH - mv $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar.zip $BACKUP_PATH - cd $TMP && rm -rf backup - - else - echo -e " ${YEL}No supported compression method detected! Copying backup uncompressed...${CRS}\n" - mkdir -p $BACKUP_PATH - mv $TMP/backup $BACKUP_PATH/$APP_NAME.$BACKUP_METHOD.backup_$DATE - cd $TMP && rm -rf backup - fi - - echo -e " - ${CRS}Backup stored in ${CYN}$BACKUP_PATH${CRS}...${CRS}\n" - cd $CWD - fi -} - -### REMOVE -remove_application() { - if [ -d "$INSTALL_PATH" ] ; then - - while true ; do - read -p " Remove $APP_NAME_LONG incl. backups, configuration and launcher? (Y/n) : " CONFIRM_REMOVE - - if [[ "$CONFIRM_REMOVE" == "" || "$CONFIRM_REMOVE" == "y" || "$CONFIRM_REMOVE" == "Y" ]] ; then - REMOVABLE=("$INSTALL_PATH" "$LAUNCHER_PATH/$APP_NAME.desktop" "$APP_CONFIG_PATH" "$SCRIPT_PATH/$SCRIPT_FILE_NAME" "$SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME") - echo -e "\n - ${CRS}Removing ${CYN}$APP_NAME_LONG${CRS} files, directories and configuration...${CRS}" - - for RM_PATH in "${REMOVABLE[@]}" ; do - if [[ -f "$RM_PATH" || -d "$RM_PATH" ]] ; then - rm -rf "$RM_PATH" - fi - done - - shell_check - - if [ "$ACTIVE_SHELL" == "zsh" ] ; then - if [ "$(cat $HOME/.zshrc | grep "$ALIAS")" ] ; then - sed -i "/$APP_NAME_LONG/d" $HOME/.zshrc - sed -i "/$ALIAS/d" $HOME/.zshrc - echo -e "\n - Alias removed from ${CYN}$ACTIVE_SHELL${CRS}" - fi - - elif [ "$ACTIVE_SHELL" == "bash" ] ; then - if [ "$(cat $HOME/.bashrc | grep "$ALIAS")" ] ; then - sed -i "/$APP_NAME_LONG/d" $HOME/.bashrc - sed -i "/$ALIAS/d" $HOME/.bashrc - echo -e "\n - Alias removed from ${CYN}$ACTIVE_SHELL${CRS}" - fi - - elif [ "$ACTIVE_SHELL" == "fish" ] ; then - if [ "$(cat $HOME/.config/fish/config.fish | grep "source $HOME/.config/fish/$ALIAS.fish")" ] ; then - sed -i "/$ALIAS/d" $HOME/.config/fish/config.fish - rm $HOME/.config/fish/$ALIAS.fish - echo -e "\n - Alias removed from ${CYN}$ACTIVE_SHELL${CRS}" - fi - fi - - echo -e "\n ${YEL}$APP_NAME_LONG removed!${CRS}\n" - break - - elif [[ "$CONFIRM_REMOVE" == "n" || "$CONFIRM_REMOVE" == "N" ]] ; then - echo -e " ${RED}Cancelled!${CRS}" - exit - - else - echo -e " ${YEL}Invalid response!${CRS}\n" - fi - done - - else - echo -e " ${RED}Can't remove $APP_NAME_LONG! ${CYN}$INSTALL_PATH ${RED}directory not found...${CRS}\n" - exit - fi -} - -### SCRIPT VERSION -script_version() { - echo -e "\n ${CYN}$APP_NAME_LONG Helper Script Version : ${CRS}$SCRIPT_VERSION\n" -} - -### UPDATE SCRIPT -scrip_version_info() { - echo -e " - ${CYN}Local Version :\t${CRS}$SCRIPT_VERSION" - echo -e " - ${CYN}Remote Version :\t${CRS}$REMOTE_SCRIPT_VERSION" - echo -e " - ${CYN}Update Branch :\t${CRS}$REMOTE_REPO_BRANCH\n" -} - -update_script() { - if ! [ -f "$SCRIPT_PATH/$SCRIPT_FILE_NAME" ] ; then - echo -e "\n ${YEL}$SCRIPT_FILE_NAME not found...${CRS}" - - while true ; do - echo - 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 - 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}" - break - - elif [[ "$CONFIRM_SCRIPT_INSTALL" == "n" || "$CONFIRM_SCRIPT_INSTALL" == "N" ]] ; then - echo -e " ${RED}Cancelled!${CRS}\n" - exit - - else - echo -e " ${YEL}Invalid response!${CRS}\n" - fi - done - fi - - REMOTE_SCRIPT_VERSION=$(curl -s $REMOTE_SCRIPT_URL | grep -m 1 "SCRIPT_VERSION" | tr -d 'SCRIPT_VERSION="') - - ### 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}" - exit - - elif [ -z "$REMOTE_SCRIPT_VERSION" ] ; then - echo -e "\n ${RED}Empty version tag from ${CYN}remote script${RED}! Can't compare, exiting...${CRS}" - exit - fi - - ### COMPARE LOCAL & REMOTE VERSION - SCRIPT_VERSION_NUM=$(echo $SCRIPT_VERSION | tr -d .) - REMOTE_SCRIPT_VERSION_NUM=$(echo $REMOTE_SCRIPT_VERSION | tr -d .) - - if [ "$REMOTE_SCRIPT_VERSION" == "$SCRIPT_VERSION" ] ; then - echo -e "\n ${GRN}$SCRIPT_FILE_NAME is already up-to-date!${CRS}\n" - - elif [ "$REMOTE_SCRIPT_VERSION_NUM" -gt "$SCRIPT_VERSION_NUM" ] ; then - echo -e "\n ${LCY}$SCRIPT_FILE_NAME is updatable!${CRS}\n" - scrip_version_info - - 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 - mkdir -p $BACKUP_PATH - fi - mv $SCRIPT_PATH/$SCRIPT_FILE_NAME $BACKUP_PATH/$SCRIPT_FILE_NAME.old - mv $SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME $BACKUP_PATH/$AUTO_SCRIPT_FILE_NAME.old - 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 " ${GRN}$SCRIPT_FILE_NAME is up-to-date!${CRS}" - break - - elif [[ "$CONFIRM_SCRIPT_UPDATE" == "n" || "$CONFIRM_SCRIPT_UPDATE" == "N" ]] ; then - echo -e " ${RED}Cancelled!${CRS}\n" - break - - else - echo -e " ${YEL}Invalid response!${CRS}\n" - fi - done - - else - echo -e "\n ${RED}Version tags malformed or you are using a Beta version!${CRS}\n" - scrip_version_info - echo -e " ${RED}Updating script failed...${CRS}\n" - fi -} - -### 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" -} - -compare_version() { - 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}') - - if [ -z "$APP_SOURCE_VERSION" ] ; then - 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}\n" - exit - fi - - LOCAL_VERSION_NUM=$(echo $LOCAL_VERSION | tr -d .) - APP_SOURCE_VERSION_NUM=$(echo $APP_SOURCE_VERSION | tr -d .) - - if [ "$APP_SOURCE_VERSION" == "$LOCAL_VERSION" ] ; then - echo -e "\n ${GRN}$APP_NAME_LONG is up-to-date!${CRS}\n" - app_version_info - - elif [ "$APP_SOURCE_VERSION_NUM" -gt "$LOCAL_VERSION_NUM" ] ; then - echo -e "\n ${LCY}$APP_NAME_LONG is updatable!${CRS}\n" - app_version_info - - else - echo -e "\n ${RED}Version tags malformed or you are using a Beta version!${CRS}\n" - app_version_info - fi -} - -### 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 "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-r\tRemove $APP_NAME_LONG" - echo -e "\t-c\tCompare local to remote version" - echo -e "\t-s\tShow script version" - echo -e "\t-S\tUpdate $SCRIPT_FILE_NAME" - echo -e "\t-h\tPrint this help page\n" - echo -e "Configured directories:\n" - echo -e "\t${CYN}${INSTALL_PATH}${CRS}\t\tInstall location" - echo -e "\t${CYN}${LAUNCHER_PATH}${CRS}\tLauncher location" - echo -e "\t${CYN}${SCRIPT_PATH}${CRS}\t\t\tScript location\n" -} - -### EXIT CLEAN -exit_clean() { - if [ -d "$TMP" ] ; then - rm -rf $TMP - fi - - exit -} - -########## MAIN ########## - -## 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}" - help - exit - fi - - case $OPTION in - i) - echo -e "\n ${YEL}Installing $APP_NAME_LONG...${CRS}\n" - if [ "$#" -gt "1" ] ; then - ALL_PARAMETER=$@ - - for PARAMETER in ${ALL_PARAMETER[@]} ; do - if [ -d "$PARAMETER" ] ; then - INSTALL_PATH=$PARAMETER - fi - done - fi - dependency_check - arch_check - install_application - exit_clean ;; - - l) - echo -e "\n ${YEL}Adding $APP_NAME_LONG launcher...${CRS}" - dependency_check - local_check - add_launcher - exit_clean ;; - - a) - echo -e "\n ${YEL}Adding alias...${CRS}" - if [ "$#" -gt "1" ] ; then - ALL_PARAMETER=$@ - - for PARAMETER in ${ALL_PARAMETER[@]} ; do - if [ "$PARAMETER" ] ; then - ALIAS=$PARAMETER - fi - done - fi - shell_check - add_alias - exit ;; - - u) - echo -e "\n ${YEL}Updating $APP_NAME_LONG...${CRS}" - dependency_check - arch_check - local_check - update_application - exit_clean ;; - - b) - echo -e "\n ${YEL}Backing up $APP_NAME_LONG...${CRS}" - if [ "$#" -gt "1" ] ; then - ALL_PARAMETER=$@ - - for PARAMETER in ${ALL_PARAMETER[@]} ; do - if [[ "$PARAMETER" == "script" || "$PARAMETER" == "config" || "$PARAMETER" == "app" || "$PARAMETER" == "full" ]] ; then - BACKUP_METHOD=$PARAMETER - - elif [[ "$PARAMETER" == "pbzip2" || "$PARAMETER" == "gzip" || "$PARAMETER" == "bzip2" || "$PARAMETER" == "zip" ]] ; then - BACKUP_COMPRESSION_OVERRIDE=$PARAMETER - - elif [ -d "$PARAMETER" ] ; then - BACKUP_PATH=$PARAMETER - fi - done - fi - call_backup - exit ;; - - r) - echo -e "\n ${YEL}Removing $APP_NAME_LONG...${CRS}\n" - remove_application - exit ;; - - c) - echo -e "\n ${YEL}Comparing remote to local version...${CRS}" - dependency_check - local_check - compare_version - exit_clean ;; - - s) - script_version - exit ;; - - S) - echo -e "\n ${YEL}Updating script...${CRS}" - dependency_check - update_script - exit_clean ;; - - h) - help - exit ;; - - *) - echo -e "\n${YEL}Option ${RED}$1${YEL} not recognized... Refer to help below!${CRS}" - help - exit ;; - esac -done - -## ENVIRONMENT CHECK -dependency_check -arch_check - -## CHECK LOCAL INSTALL -local_check - -## UPDATE -update_application - -## CLEAN -exit_clean diff --git a/helium_helper_LOCAL_10032.sh b/helium_helper_LOCAL_10032.sh deleted file mode 100644 index 63ccfb9..0000000 --- a/helium_helper_LOCAL_10032.sh +++ /dev/null @@ -1,1100 +0,0 @@ -#!/bin/bash -# Helium BOWSER INSTALL & UPDATE SCRIPT ---> INTERACTIVE -########## PREREQUISITES ########### -set -e - -## SOME COLOR -CYN="\e[0;36m" -YEL="\e[0;33m" -RED="\e[0;31m" -GRN="\e[0;32m" -LCY="\e[1;36m" -WHT="\e[1;37m" -CRS="\e[0m" - -## GLOBAL VARIABLES -APP_NAME="Helium" -APP_NAME_LONG="Helium Web Browser" -FILE_EXTENSION="AppImage" -APP_SOURCE="GitHub" -ARCH_OVERRIDE="" -BACKUP_METHOD="full" -BACKUP_COMPRESSION_OVERRIDE="" -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" -DATE=$(date +"%d%m%y") - -## LOCATIONS -TMP=/tmp/$APP_NAME -INSTALL_PATH=$HOME/.apps/$APP_NAME -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 -LOG=$LOG_PATH/log -LAUNCHER_PATH=$HOME/.local/share/applications -SCRIPT_PATH=$HOME/.local/bin - -## REMOTE LOCATIONS -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 ############################ - -#################### DEPENDENCY CHECK #################### -cmd_query() { - if ! command -v $PACKAGE > /dev/null 2>&1 ; then - echo " - $PACKAGE" >> $TMP/missingDeps - fi -} - -dependency_check () { - DEPENDENCIES=("curl" "wget" "tar") - mkdir -p $TMP - - for PACKAGE in "${DEPENDENCIES[@]}" ; do - cmd_query "$PACKAGE" - - 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" - exit_clean - fi -} - -#################### SHELL CHECK #################### -shell_query() { - if [ "$(echo $SHELL | grep "$SHELL_OPTION")" ] ; then - ACTIVE_SHELL=$SHELL_OPTION - fi - -} - -shell_check() { - SHELLS=("bash" "fish" "zsh") - - for SHELL_OPTION in "${SHELLS[@]}" ; do - shell_query "$SHELL_OPTION" - done -} - -#################### ARCH CHECK #################### -arch_check() { - if [ "$ARCH_OVERRIDE" ] ; then - ARCH=$ARCH_OVERRIDE - - else - ARCH=$(uname -m) - if [ "$ARCH" == "aarch64" ] ; then - ARCH="arm64" - - elif [ "$ARCH" == "amd64" ] ; then - ARCH="x86_64" - fi - fi - - if ! [[ "$ARCH" == "arm64" || "$ARCH" == "x86_64" ]] ; then - echo -e "\n ${CYN}$ARCH ${RED}unsupported! Only ${CYN}x86_68 ${RED}or ${CYN}arm64 ${RED}architecture are supported!${CRS}\n" - exit - fi -} - -#################### LOCAL INSTALL CHECK #################### -local_check() { - if ! [ -d "$INSTALL_PATH" ] ; then - echo -e "\n ${YEL}$APP_NAME_LONG directory not found!${CRS}\n" - install_application - exit - - elif ! [ -f "$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION" ] ; then - echo -e "\n ${YEL}$APP_NAME_LONG directory found but no executable named ${CYN}$APP_NAME.$FILE_EXTENSION${YEL}!${CRS}\n" - install_application - exit - 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_application() { - if [ -f "$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION" ] ; then - echo -e " ${YEL}$APP_NAME_LONG AppImage found! Trying to update...${CRS}" - update_application - exit - fi - - while true ; do - read -p " Download and install $APP_NAME_LONG from $APP_SOURCE? (Y/n) : " CONFIRM_INSTALL - - if [[ "$CONFIRM_INSTALL" == "" || "$CONFIRM_INSTALL" == "y" || "$CONFIRM_INSTALL" == "Y" ]] ; then - DOWNLOAD_URL=$(curl -s $APP_SOURCE_URL | grep "browser_download_url" | grep "$ARCH.$FILE_EXTENSION" | grep -v "zsync" | tr -d \" | awk '{print $2}') - APP_SOURCE_FILENAME=$(curl -s $APP_SOURCE_URL | grep "browser_download_url" | grep "$ARCH.$FILE_EXTENSION" | grep -v "zsync" | tr -d \" | awk '{print $2}' | awk -F'/' '{print $9}') - echo -e "\n - Downloading ${CYN}$APP_SOURCE_FILENAME${CRS}..." - wget -P $TMP $DOWNLOAD_URL -q - chmod +x $TMP/$APP_SOURCE_FILENAME - mkdir -p $INSTALL_PATH - mv $TMP/$APP_SOURCE_FILENAME $INSTALL_PATH/$APP_NAME.$FILE_EXTENSION - add_launcher - echo -e "\n ${GRN}$APP_NAME_LONG is installed!${CRS}\n" - break - - elif [[ "$CONFIRM_INSTALL" == "n" || "$CONFIRM_INSTALL" == "N" ]] ; then - echo -e "\n ${RED}Cancelled!${CRS}\n" - break - - else - echo -e "\n ${YEL}Invalid response!${CRS}\n" - fi - done -} - -#################### LAUNCHER #################### -add_launcher() { - if [ -f "$LAUNCHER_PATH/$APP_NAME.desktop" ] ; then - echo -e "\n ${YEL}${APP_NAME}.desktop already exists!${CRS}" - - elif [ -f "$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION" ] ; then - while true ; do - echo - read -p " Add $APP_NAME_LONG launcher to $LAUNCHER_PATH? (Y/n) : " CONFIRM_LAUNCHER - - if [[ "$CONFIRM_LAUNCHER" == "" || "$CONFIRM_LAUNCHER" == "y" || "$CONFIRM_LAUNCHER" == "Y" ]] ; then - LAUNCHER_URL=$REMOTE_REPO_URL/assets/launcher/helium.desktop.template - ICON_URL=$REMOTE_REPO_URL/assets/icon/helium.png - AUTO_SCRIPT_URL=$REMOTE_REPO_URL/$AUTO_SCRIPT_FILE_NAME - LOCAL_VERSION=$($INSTALL_PATH/$APP_NAME.$FILE_EXTENSION --version | awk '{print $2}') - mkdir -p $LAUNCHER_PATH $SCRIPT_PATH $BACKUP_PATH $ASSET_PATH/icon - if ! [ -f "$SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME" ] ; then - echo -e "\n - Downloading ${CYN}$AUTO_SCRIPT_FILE_NAME${CRS}..." - wget -P $TMP $AUTO_SCRIPT_URL -q - chmod +x $TMP/$AUTO_SCRIPT_FILE_NAME - mv $TMP/$AUTO_SCRIPT_FILE_NAME $SCRIPT_PATH - fi - - echo -e "\n - Downloading ${CYN}launcher files${CRS}..." - wget -P $TMP $LAUNCHER_URL -q - wget -P $TMP $ICON_URL -q - sed -i "s|%APP_LOCATION%|$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION|" $TMP/helium.desktop.template - sed -i "s|%ICON_LOCATION%|$ASSET_PATH/icon/helium.png|" $TMP/helium.desktop.template - sed -i "s|%APP_VERSION%|$LOCAL_VERSION|" $TMP/helium.desktop.template - sed -i "s|%QUIET_UPDATE_SCRIPT%|$SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME|" $TMP/helium.desktop.template - sed -i "s|%SCRIPT_UPDATE%|$SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME -S|" $TMP/helium.desktop.template - sed -i "s|%OPEN_LOG_EDITOR%|$SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME -L|" $TMP/helium.desktop.template - mv $TMP/helium.desktop.template $LAUNCHER_PATH/$APP_NAME.desktop - mv $TMP/helium.png $ASSET_PATH/icon - echo -e "\n ${GRN}$APP_NAME_LONG launcher is set up!${CRS}" - break - - elif [[ "$CONFIRM_LAUNCHER" == "n" || "$CONFIRM_LAUNCHER" == "N" ]] ; then - echo -e " ${RED}Launcher not added!${CRS}" - break - - else - echo -e " ${YEL}Invalid response!${CRS}\n" - fi - done - - else - echo -e "\n ${RED}$APP_NAME_LONG AppImage not found! Can't add launcher...${CRS}" - install_application - exit - fi -} - -#################### ALIAS #################### -add_alias() { - if ! [ -f "$SCRIPT_PATH/$SCRIPT_FILE_NAME" ] ; then - mkdir -p $SCRIPT_PATH - wget -P $TMP $REMOTE_SCRIPT_URL -q - chmod +x $TMP/$SCRIPT_FILE_NAME - mv $TMP/$SCRIPT_FILE_NAME $SCRIPT_PATH - fi - - if [ "$ACTIVE_SHELL" == "zsh" ] ; then - if [ "$(cat $HOME/.zshrc | grep "$ALIAS")" ] ; then - echo -e "\n ${LCY}$ALIAS${CRS} already present in ${CYN}$HOME/.zshrc${CRS}\n" - - else - echo "### $APP_NAME_LONG Alias zsh ###" >> $HOME/.zshrc - echo "alias $ALIAS=\"$SCRIPT_PATH/$SCRIPT_FILE_NAME\"" >> $HOME/.zshrc - echo >> $HOME/.zshrc - echo -e "\n ${LCY}$ALIAS${CRS} added to ${CYN}$HOME/.zshrc${CRS}\n" - fi - - elif [ "$ACTIVE_SHELL" == "bash" ] ; then - if [ "$(cat $HOME/.bashrc | grep "$ALIAS")" ] ; then - echo -e "\n ${LCY}$ALIAS${CRS} already present in ${CYN}$HOME/.bashrc${CRS}\n" - - else - echo "### $APP_NAME_LONG Alias bash ###" >> $HOME/.bashrc - echo "alias $ALIAS=\"$SCRIPT_PATH/$SCRIPT_FILE_NAME\"" >> $HOME/.bashrc - echo >> $HOME/.bashrc - echo -e "\n ${LCY}$ALIAS${CRS} added to ${CYN}$HOME/.bashrc${CRS}\n" - fi - - elif [ "$ACTIVE_SHELL" == "fish" ] ; then - if [ "$(cat $HOME/.config/fish/config.fish | grep "source $HOME/.config/fish/$ALIAS.fish")" ] ; then - echo -e "\n ${LCY}$ALIAS${CRS} already present in ${CYN}$HOME/.config/fish/config.fish${CRS}\n" - - else - echo "### $APP_NAME_LONG Alias FISH ###" > $HOME/.config/fish/$ALIAS.fish - echo >> $HOME/.config/fish/$ALIAS.fish - echo "function $ALIAS" >> $HOME/.config/fish/$ALIAS.fish - echo " $SCRIPT_PATH/$SCRIPT_FILE_NAME \$argv" >> $HOME/.config/fish/$ALIAS.fish - echo "end" >> $HOME/.config/fish/$ALIAS.fish - echo >> $HOME/.config/fish/$ALIAS.fish - echo "source $HOME/.config/fish/$ALIAS.fish" >> $HOME/.config/fish/config.fish - echo -e "\n ${LCY}$ALIAS ${CRS}added to ${CYN}$HOME/.config/fish/config.fish${CRS}\n" - fi - - else - echo -e "\n ${LCY}$ACTIVE_SHELL${RED}shell is not yet supported!${CRS}\n" - echo -e " ${CRS}Working implementation are available for bash, zsh & fish!${CRS}\n" - fi -} - -#################### 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" - exit - - elif [ -z "$LOCAL_VERSION" ] ; then - echo -e "\n ${RED}Empty version tag from ${CYN}local AppImage${RED}! Can't compare, exiting...${CRS}\n" - exit - fi - - ### COMPARE LOCAL & REMOTE VERSION - LOCAL_VERSION_NUM=$(echo $LOCAL_VERSION | tr -d .) - APP_SOURCE_VERSION_NUM=$(echo $APP_SOURCE_VERSION | tr -d .) - - if [ "$APP_SOURCE_VERSION" == "$LOCAL_VERSION" ] ; then - echo -e "\n ${GRN}$APP_NAME_LONG is already up-to-date!${CRS}\n" - - elif [ "$APP_SOURCE_VERSION_NUM" -gt "$LOCAL_VERSION_NUM" ] ; then - echo -e "\n ${LCY}$APP_NAME_LONG is updatable!${CRS}\n" - app_version_info - - while true ; do - read -p " Download and update $APP_NAME_LONG from $APP_SOURCE? (Y/n) : " CONFIRM - - if [[ "$CONFIRM" == "" || "$CONFIRM" == "y" || "$CONFIRM" == "Y" ]] ; then - DOWNLOAD_URL=$(curl -s $APP_SOURCE_URL | grep "browser_download_url" | grep "$ARCH.$FILE_EXTENSION" | grep -v "zsync" | tr -d \" | awk '{print $2}') - APP_SOURCE_FILENAME=$(curl -s $APP_SOURCE_URL | grep "browser_download_url" | grep "$ARCH.$FILE_EXTENSION" | grep -v "zsync" | tr -d \" | awk '{print $2}' | awk -F'/' '{print $9}') - mkdir -p $TMP - echo -e "\n - Downloading ${CYN}$APP_SOURCE_FILENAME${CRS}..." - wget -P $TMP $DOWNLOAD_URL -q - ${BACKUP_METHOD}_backup - chmod +x $TMP/$APP_SOURCE_FILENAME - mv $TMP/$APP_SOURCE_FILENAME $INSTALL_PATH/$APP_NAME.$FILE_EXTENSION - sed -i "s|X-AppImage-Version=.*|X-AppImage-Version=$($INSTALL_PATH/$APP_NAME.$FILE_EXTENSION --version | awk '{print $2}')|" $LAUNCHER_PATH/$APP_NAME.desktop - echo -e " ${GRN}$APP_NAME_LONG is up-to-date!${CRS}\n" - break - - elif [[ "$CONFIRM" == "n" || "$CONFIRM" == "N" ]] ; then - echo -e "\n ${RED}Cancelled!${CRS}\n" - exit - - else - echo -e "\n ${YEL}Invalid response!${CRS}\n" - fi - done - - else - echo -e "\n ${RED}Version tags malformed or you are using a Beta version!${CRS}\n" - app_version_info - echo -e " ${RED}Update failed... Exiting...${CRS}\n" - exit - fi -} - -#################### BACKUP #################### -call_backup() { - 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 - read -p " Overwrite backup? (y/N) : " OVERWRITE_BACKUP - - if [[ "$OVERWRITE_BACKUP" == "" || "$OVERWRITE_BACKUP" == "n" || "$OVERWRITE_BACKUP" == "N" ]] ; then - echo -e "\n ${YEL}Skipping backup process...${CRS}\n" - break - - elif [[ "$OVERWRITE_BACKUP" == "y" || "$OVERWRITE_BACKUP" == "Y" ]] ; then - echo -e "\n ${YEL}Overwriting backup...${CRS}" - 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 - 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 - - if [ -d "$BACKUP_ITEM" ] ; then - mkdir -p $TMP/backup - cp -r $BACKUP_ITEM $TMP/backup - - elif [ -f "$BACKUP_ITEM" ] ; then - mkdir -p $TMP/backup - cp $BACKUP_ITEM $TMP/backup - fi - done - - backup_logger -} - -script_backup() { - if [ -d "$SCRIPT_PATH" ] ; then - BACKUPABLE=("$SCRIPT_PATH/$SCRIPT_FILE_NAME" "$SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME") - echo -e "\n - ${CRS}Collecting files for ${CYN}$BACKUP_METHOD${CRS} backup...${CRS}" - backup_file_collector - pack_backup - - else - echo -e " ${YEL}Nothing to back up...${CRS}" - fi -} - -app_backup() { - if [ -f "$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION" ] ; then - BACKUPABLE=("$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION") - echo -e "\n - ${CRS}Collecting files for ${CYN}$BACKUP_METHOD${CRS} backup...${CRS}" - backup_file_collector - pack_backup - - else - echo -e " ${YEL}Nothing to back up...${CRS}" - fi -} - -config_backup() { - if [[ -d "$LAUNCHER_PATH" || -d $APP_CONFIG_PATH ]] ; then - BACKUPABLE=("$LAUNCHER_PATH/$APP_NAME.desktop" "$APP_CONFIG_PATH") - echo -e "\n - ${CRS}Collecting files for ${CYN}$BACKUP_METHOD${CRS} backup...${CRS}" - backup_file_collector - pack_backup - - else - echo -e " ${YEL}Nothing to back up...${CRS}" - fi -} - -full_backup() { - if [[ -d "$INSTALL_PATH" || -d "$SCRIPT_PATH" || -d $APP_CONFIG_PATH ]] ; then - BACKUPABLE=("$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") - echo -e "\n - ${CRS}Collecting files for ${CYN}$BACKUP_METHOD${CRS} backup...${CRS}" - backup_file_collector - pack_backup - - else - echo -e " ${YEL}Nothing to back up...${CRS}" - fi -} - -pack_backup() { - if [ -d "$TMP/backup" ] ; then - CWD=$(pwd) - cd $TMP/backup - - if [[ -f "*.sh" ]] ; then - chmod -x *.sh - - elif [[ -f "*.$FILE_EXTENSION" ]] ; then - chmod -x *.$FILE_EXTENSION - fi - - if [ "$BACKUP_COMPRESSION_OVERRIDE" ] ; then - BACKUP_COMPRESSION=$BACKUP_COMPRESSION_OVERRIDE - - else - COMPRESSION_METHOD=("pbzip2" "gzip" "bzip2" "zip") - - until [ "$BACKUP_COMPRESSION" ] ; do - for COMPRESSION_TYPE in "${COMPRESSION_METHOD[@]}" ; do - - if command -v $COMPRESSION_TYPE > /dev/null 2>&1 ; then - BACKUP_COMPRESSION=$COMPRESSION_TYPE - break - fi - done - done - fi - - echo -e "\n - ${CRS}Packing backup archive with ${CYN}$BACKUP_COMPRESSION${CRS}...${CRS}\n" - - if [ "$BACKUP_COMPRESSION" == "pbzip2" ] ; then - tar -cf $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar * > /dev/null 2>&1 - pbzip2 $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar - mkdir -p $BACKUP_PATH - mv $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar.bz2 $BACKUP_PATH - cd $TMP && rm -rf backup - - elif [ "$BACKUP_COMPRESSION" == "gzip" ] ; then - tar -cf $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar * > /dev/null 2>&1 - gzip $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar - mkdir -p $BACKUP_PATH - mv $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar.gz $BACKUP_PATH - cd $TMP && rm -rf backup - - elif [ "$BACKUP_COMPRESSION" == "bzip2" ] ; then - tar -cf $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar * > /dev/null 2>&1 - bzip2 $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar - mkdir -p $BACKUP_PATH - mv $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar.bz2 $BACKUP_PATH - cd $TMP && rm -rf backup - - elif [ "$BACKUP_COMPRESSION" == "zip" ] ; then - tar -cf $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar * > /dev/null 2>&1 - zip -r $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar.zip $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar > /dev/null 2>&1 - mkdir -p $BACKUP_PATH - mv $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar.zip $BACKUP_PATH - cd $TMP && rm -rf backup - - else - echo -e " ${YEL}No supported compression method detected! Copying backup uncompressed...${CRS}\n" - mkdir -p $BACKUP_PATH - mv $TMP/backup $BACKUP_PATH/$APP_NAME.$BACKUP_METHOD.backup_$DATE - cd $TMP && rm -rf backup - fi - - echo -e " - ${CRS}Backup stored in ${CYN}$BACKUP_PATH${CRS}...${CRS}\n" - cd $CWD - 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 - 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 - - while true ; do - read -p " Remove $APP_NAME_LONG incl. backups, configuration and launcher? (Y/n) : " CONFIRM_REMOVE - - if [[ "$CONFIRM_REMOVE" == "" || "$CONFIRM_REMOVE" == "y" || "$CONFIRM_REMOVE" == "Y" ]] ; then - REMOVABLE=("$INSTALL_PATH" "$LAUNCHER_PATH/$APP_NAME.desktop" "$APP_CONFIG_PATH" "$SCRIPT_PATH/$SCRIPT_FILE_NAME" "$SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME") - echo -e "\n - ${CRS}Removing ${CYN}$APP_NAME_LONG${CRS} files, directories and configuration...${CRS}" - - for RM_PATH in "${REMOVABLE[@]}" ; do - if [[ -f "$RM_PATH" || -d "$RM_PATH" ]] ; then - rm -rf "$RM_PATH" - fi - done - - shell_check - - if [ "$ACTIVE_SHELL" == "zsh" ] ; then - if [ "$(cat $HOME/.zshrc | grep "$ALIAS")" ] ; then - sed -i "/$APP_NAME_LONG/d" $HOME/.zshrc - sed -i "/$ALIAS/d" $HOME/.zshrc - echo -e "\n - Alias removed from ${CYN}$ACTIVE_SHELL${CRS}" - fi - - elif [ "$ACTIVE_SHELL" == "bash" ] ; then - if [ "$(cat $HOME/.bashrc | grep "$ALIAS")" ] ; then - sed -i "/$APP_NAME_LONG/d" $HOME/.bashrc - sed -i "/$ALIAS/d" $HOME/.bashrc - echo -e "\n - Alias removed from ${CYN}$ACTIVE_SHELL${CRS}" - fi - - elif [ "$ACTIVE_SHELL" == "fish" ] ; then - if [ "$(cat $HOME/.config/fish/config.fish | grep "source $HOME/.config/fish/$ALIAS.fish")" ] ; then - sed -i "/$ALIAS/d" $HOME/.config/fish/config.fish - rm $HOME/.config/fish/$ALIAS.fish - echo -e "\n - Alias removed from ${CYN}$ACTIVE_SHELL${CRS}" - fi - fi - - echo -e "\n ${YEL}$APP_NAME_LONG removed!${CRS}\n" - break - - elif [[ "$CONFIRM_REMOVE" == "n" || "$CONFIRM_REMOVE" == "N" ]] ; then - echo -e "\n ${RED}Cancelled!${CRS}" - exit - - else - echo -e "\n ${YEL}Invalid response!${CRS}\n" - fi - done - - else - echo -e " ${RED}Can't remove $APP_NAME_LONG! ${CYN}$INSTALL_PATH ${RED}directory not found...${CRS}\n" - exit - fi -} - -#################### SCRIPT VERSION #################### -script_version() { - echo -e "\n ${CYN}$APP_NAME_LONG Helper Script Version : ${CRS}$SCRIPT_VERSION\n" -} - -#################### UPDATE SCRIPT #################### -scrip_version_info() { - echo -e " - ${CYN}Local Version :\t${CRS}$SCRIPT_VERSION" - echo -e " - ${CYN}Remote Version :\t${CRS}$REMOTE_SCRIPT_VERSION" - echo -e " - ${CYN}Update Branch :\t${CRS}$REMOTE_REPO_BRANCH\n" -} - -update_script() { - if ! [ -f "$SCRIPT_PATH/$SCRIPT_FILE_NAME" ] ; then - echo -e "\n ${YEL}$SCRIPT_FILE_NAME not found...${CRS}" - - while true ; do - echo - 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 - 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" - break - - elif [[ "$CONFIRM_SCRIPT_INSTALL" == "n" || "$CONFIRM_SCRIPT_INSTALL" == "N" ]] ; then - echo -e " ${RED}Cancelled!${CRS}\n" - exit - - else - echo -e " ${YEL}Invalid response!${CRS}\n" - fi - done - fi - - REMOTE_SCRIPT_VERSION=$(curl -s $REMOTE_SCRIPT_URL | grep -m 1 "SCRIPT_VERSION" | tr -d 'SCRIPT_VERSION="') - - ### 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" - 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" - exit - fi - - ### COMPARE LOCAL & REMOTE VERSION - SCRIPT_VERSION_NUM=$(echo $SCRIPT_VERSION | tr -d .) - REMOTE_SCRIPT_VERSION_NUM=$(echo $REMOTE_SCRIPT_VERSION | tr -d .) - - if [ "$REMOTE_SCRIPT_VERSION" == "$SCRIPT_VERSION" ] ; then - echo -e "\n ${GRN}$SCRIPT_FILE_NAME is already up-to-date!${CRS}\n" - - elif [ "$REMOTE_SCRIPT_VERSION_NUM" -gt "$SCRIPT_VERSION_NUM" ] ; then - echo -e "\n ${LCY}$SCRIPT_FILE_NAME is updatable!${CRS}\n" - scrip_version_info - - while true ; do - read -p " Update $SCRIPT_FILE_NAME? (Y/n) : " CONFIRM_SCRIPT_UPDATE - - if [[ "$CONFIRM_SCRIPT_UPDATE" == "" || "$CONFIRM_SCRIPT_UPDATE" == "y" || "$CONFIRM_SCRIPT_UPDATE" == "Y" ]] ; then - if ! [ -d "$BACKUP_PATH" ] ; then - mkdir -p $BACKUP_PATH - fi - mv $SCRIPT_PATH/$SCRIPT_FILE_NAME $BACKUP_PATH/$SCRIPT_FILE_NAME.old - mv $SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME $BACKUP_PATH/$AUTO_SCRIPT_FILE_NAME.old - 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 " ${GRN}$SCRIPT_FILE_NAME is up-to-date!${CRS}" - break - - elif [[ "$CONFIRM_SCRIPT_UPDATE" == "n" || "$CONFIRM_SCRIPT_UPDATE" == "N" ]] ; then - echo -e "\n ${RED}Cancelled!${CRS}\n" - break - - else - echo -e "\n ${YEL}Invalid response!${CRS}\n" - fi - done - - else - echo -e "\n ${RED}Version tags malformed or you are using a Beta version!${CRS}\n" - scrip_version_info - echo -e " ${RED}Updating script failed...${CRS}\n" - fi -} - -#################### 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" -} - -compare_version() { - 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}') - - if [ -z "$APP_SOURCE_VERSION" ] ; then - 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}\n" - exit - fi - - LOCAL_VERSION_NUM=$(echo $LOCAL_VERSION | tr -d .) - APP_SOURCE_VERSION_NUM=$(echo $APP_SOURCE_VERSION | tr -d .) - - if [ "$APP_SOURCE_VERSION" == "$LOCAL_VERSION" ] ; then - echo -e "\n ${GRN}$APP_NAME_LONG is up-to-date!${CRS}\n" - app_version_info - - elif [ "$APP_SOURCE_VERSION_NUM" -gt "$LOCAL_VERSION_NUM" ] ; then - echo -e "\n ${LCY}$APP_NAME_LONG is updatable!${CRS}\n" - app_version_info - - else - echo -e "\n ${RED}Version tags malformed or you are using a Beta version!${CRS}\n" - app_version_info - fi -} - -#################### 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 "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" - echo -e "\t-S\tUpdate $SCRIPT_FILE_NAME" - echo -e "\t-h\tPrint this help page\n" - echo -e "Configured directories:\n" - echo -e "\t${CYN}${INSTALL_PATH}${CRS}\t\tInstall location" - echo -e "\t${CYN}${LAUNCHER_PATH}${CRS}\tLauncher location" - echo -e "\t${CYN}${SCRIPT_PATH}${CRS}\t\t\tScript location\n" -} - -#################### EXIT CLEAN #################### -exit_clean() { - if [ -d "$TMP" ] ; then - rm -rf $TMP - fi - - exit -} - -########################### MAIN ########################### - -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}" - help - exit - fi - - case $OPTION in - i) - TARGET="INSTALL" - echo -e "\n ${YEL}Installing $APP_NAME_LONG...${CRS}\n" - if [ "$#" -gt "1" ] ; then - ALL_PARAMETER=$@ - - for PARAMETER in ${ALL_PARAMETER[@]} ; do - if [ -d "$PARAMETER" ] ; then - INSTALL_PATH=$PARAMETER - fi - done - fi - dependency_check - arch_check - path_correction - install_application - exit_clean ;; - - l) - echo -e "\n ${YEL}Adding $APP_NAME_LONG launcher...${CRS}" - dependency_check - local_check - add_launcher - exit_clean ;; - - a) - echo -e "\n ${YEL}Adding alias...${CRS}" - if [ "$#" -gt "1" ] ; then - ALL_PARAMETER=$@ - - for PARAMETER in ${ALL_PARAMETER[@]} ; do - if [ "$PARAMETER" ] ; then - ALIAS=$PARAMETER - fi - done - fi - shell_check - add_alias - exit ;; - - u) - echo -e "\n ${YEL}Updating $APP_NAME_LONG...${CRS}" - dependency_check - arch_check - local_check - update_application - exit_clean ;; - - b) - TARGET="BACKUP" - echo -e "\n ${YEL}Backing up $APP_NAME_LONG...${CRS}" - if [ "$#" -gt "1" ] ; then - ALL_PARAMETER=$@ - - for PARAMETER in ${ALL_PARAMETER[@]} ; do - if [[ "$PARAMETER" == "script" || "$PARAMETER" == "config" || "$PARAMETER" == "app" || "$PARAMETER" == "full" ]] ; then - BACKUP_METHOD=$PARAMETER - - elif [[ "$PARAMETER" == "pbzip2" || "$PARAMETER" == "gzip" || "$PARAMETER" == "bzip2" || "$PARAMETER" == "zip" ]] ; then - BACKUP_COMPRESSION_OVERRIDE=$PARAMETER - - elif [[ -d "$PARAMETER" || -d "$(pwd)/$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 ;; - - r) - echo -e "\n ${YEL}Removing $APP_NAME_LONG...${CRS}\n" - remove_application - exit ;; - - c) - echo -e "\n ${YEL}Comparing remote to local version...${CRS}" - dependency_check - local_check - compare_version - exit_clean ;; - - s) - script_version - exit ;; - - S) - echo -e "\n ${YEL}Updating script...${CRS}" - dependency_check - update_script - exit_clean ;; - - h) - help - exit ;; - - *) - echo -e "\n${YEL}Option ${RED}$1${YEL} not recognized... Refer to help below!${CRS}" - help - exit ;; - esac -done - -## ENVIRONMENT CHECK -dependency_check -arch_check - -## CHECK LOCAL INSTALL -local_check - -## UPDATE -update_application - -## CLEAN -exit_clean diff --git a/helium_helper_LOCAL_9867.sh b/helium_helper_LOCAL_9867.sh deleted file mode 100644 index 63ccfb9..0000000 --- a/helium_helper_LOCAL_9867.sh +++ /dev/null @@ -1,1100 +0,0 @@ -#!/bin/bash -# Helium BOWSER INSTALL & UPDATE SCRIPT ---> INTERACTIVE -########## PREREQUISITES ########### -set -e - -## SOME COLOR -CYN="\e[0;36m" -YEL="\e[0;33m" -RED="\e[0;31m" -GRN="\e[0;32m" -LCY="\e[1;36m" -WHT="\e[1;37m" -CRS="\e[0m" - -## GLOBAL VARIABLES -APP_NAME="Helium" -APP_NAME_LONG="Helium Web Browser" -FILE_EXTENSION="AppImage" -APP_SOURCE="GitHub" -ARCH_OVERRIDE="" -BACKUP_METHOD="full" -BACKUP_COMPRESSION_OVERRIDE="" -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" -DATE=$(date +"%d%m%y") - -## LOCATIONS -TMP=/tmp/$APP_NAME -INSTALL_PATH=$HOME/.apps/$APP_NAME -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 -LOG=$LOG_PATH/log -LAUNCHER_PATH=$HOME/.local/share/applications -SCRIPT_PATH=$HOME/.local/bin - -## REMOTE LOCATIONS -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 ############################ - -#################### DEPENDENCY CHECK #################### -cmd_query() { - if ! command -v $PACKAGE > /dev/null 2>&1 ; then - echo " - $PACKAGE" >> $TMP/missingDeps - fi -} - -dependency_check () { - DEPENDENCIES=("curl" "wget" "tar") - mkdir -p $TMP - - for PACKAGE in "${DEPENDENCIES[@]}" ; do - cmd_query "$PACKAGE" - - 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" - exit_clean - fi -} - -#################### SHELL CHECK #################### -shell_query() { - if [ "$(echo $SHELL | grep "$SHELL_OPTION")" ] ; then - ACTIVE_SHELL=$SHELL_OPTION - fi - -} - -shell_check() { - SHELLS=("bash" "fish" "zsh") - - for SHELL_OPTION in "${SHELLS[@]}" ; do - shell_query "$SHELL_OPTION" - done -} - -#################### ARCH CHECK #################### -arch_check() { - if [ "$ARCH_OVERRIDE" ] ; then - ARCH=$ARCH_OVERRIDE - - else - ARCH=$(uname -m) - if [ "$ARCH" == "aarch64" ] ; then - ARCH="arm64" - - elif [ "$ARCH" == "amd64" ] ; then - ARCH="x86_64" - fi - fi - - if ! [[ "$ARCH" == "arm64" || "$ARCH" == "x86_64" ]] ; then - echo -e "\n ${CYN}$ARCH ${RED}unsupported! Only ${CYN}x86_68 ${RED}or ${CYN}arm64 ${RED}architecture are supported!${CRS}\n" - exit - fi -} - -#################### LOCAL INSTALL CHECK #################### -local_check() { - if ! [ -d "$INSTALL_PATH" ] ; then - echo -e "\n ${YEL}$APP_NAME_LONG directory not found!${CRS}\n" - install_application - exit - - elif ! [ -f "$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION" ] ; then - echo -e "\n ${YEL}$APP_NAME_LONG directory found but no executable named ${CYN}$APP_NAME.$FILE_EXTENSION${YEL}!${CRS}\n" - install_application - exit - 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_application() { - if [ -f "$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION" ] ; then - echo -e " ${YEL}$APP_NAME_LONG AppImage found! Trying to update...${CRS}" - update_application - exit - fi - - while true ; do - read -p " Download and install $APP_NAME_LONG from $APP_SOURCE? (Y/n) : " CONFIRM_INSTALL - - if [[ "$CONFIRM_INSTALL" == "" || "$CONFIRM_INSTALL" == "y" || "$CONFIRM_INSTALL" == "Y" ]] ; then - DOWNLOAD_URL=$(curl -s $APP_SOURCE_URL | grep "browser_download_url" | grep "$ARCH.$FILE_EXTENSION" | grep -v "zsync" | tr -d \" | awk '{print $2}') - APP_SOURCE_FILENAME=$(curl -s $APP_SOURCE_URL | grep "browser_download_url" | grep "$ARCH.$FILE_EXTENSION" | grep -v "zsync" | tr -d \" | awk '{print $2}' | awk -F'/' '{print $9}') - echo -e "\n - Downloading ${CYN}$APP_SOURCE_FILENAME${CRS}..." - wget -P $TMP $DOWNLOAD_URL -q - chmod +x $TMP/$APP_SOURCE_FILENAME - mkdir -p $INSTALL_PATH - mv $TMP/$APP_SOURCE_FILENAME $INSTALL_PATH/$APP_NAME.$FILE_EXTENSION - add_launcher - echo -e "\n ${GRN}$APP_NAME_LONG is installed!${CRS}\n" - break - - elif [[ "$CONFIRM_INSTALL" == "n" || "$CONFIRM_INSTALL" == "N" ]] ; then - echo -e "\n ${RED}Cancelled!${CRS}\n" - break - - else - echo -e "\n ${YEL}Invalid response!${CRS}\n" - fi - done -} - -#################### LAUNCHER #################### -add_launcher() { - if [ -f "$LAUNCHER_PATH/$APP_NAME.desktop" ] ; then - echo -e "\n ${YEL}${APP_NAME}.desktop already exists!${CRS}" - - elif [ -f "$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION" ] ; then - while true ; do - echo - read -p " Add $APP_NAME_LONG launcher to $LAUNCHER_PATH? (Y/n) : " CONFIRM_LAUNCHER - - if [[ "$CONFIRM_LAUNCHER" == "" || "$CONFIRM_LAUNCHER" == "y" || "$CONFIRM_LAUNCHER" == "Y" ]] ; then - LAUNCHER_URL=$REMOTE_REPO_URL/assets/launcher/helium.desktop.template - ICON_URL=$REMOTE_REPO_URL/assets/icon/helium.png - AUTO_SCRIPT_URL=$REMOTE_REPO_URL/$AUTO_SCRIPT_FILE_NAME - LOCAL_VERSION=$($INSTALL_PATH/$APP_NAME.$FILE_EXTENSION --version | awk '{print $2}') - mkdir -p $LAUNCHER_PATH $SCRIPT_PATH $BACKUP_PATH $ASSET_PATH/icon - if ! [ -f "$SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME" ] ; then - echo -e "\n - Downloading ${CYN}$AUTO_SCRIPT_FILE_NAME${CRS}..." - wget -P $TMP $AUTO_SCRIPT_URL -q - chmod +x $TMP/$AUTO_SCRIPT_FILE_NAME - mv $TMP/$AUTO_SCRIPT_FILE_NAME $SCRIPT_PATH - fi - - echo -e "\n - Downloading ${CYN}launcher files${CRS}..." - wget -P $TMP $LAUNCHER_URL -q - wget -P $TMP $ICON_URL -q - sed -i "s|%APP_LOCATION%|$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION|" $TMP/helium.desktop.template - sed -i "s|%ICON_LOCATION%|$ASSET_PATH/icon/helium.png|" $TMP/helium.desktop.template - sed -i "s|%APP_VERSION%|$LOCAL_VERSION|" $TMP/helium.desktop.template - sed -i "s|%QUIET_UPDATE_SCRIPT%|$SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME|" $TMP/helium.desktop.template - sed -i "s|%SCRIPT_UPDATE%|$SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME -S|" $TMP/helium.desktop.template - sed -i "s|%OPEN_LOG_EDITOR%|$SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME -L|" $TMP/helium.desktop.template - mv $TMP/helium.desktop.template $LAUNCHER_PATH/$APP_NAME.desktop - mv $TMP/helium.png $ASSET_PATH/icon - echo -e "\n ${GRN}$APP_NAME_LONG launcher is set up!${CRS}" - break - - elif [[ "$CONFIRM_LAUNCHER" == "n" || "$CONFIRM_LAUNCHER" == "N" ]] ; then - echo -e " ${RED}Launcher not added!${CRS}" - break - - else - echo -e " ${YEL}Invalid response!${CRS}\n" - fi - done - - else - echo -e "\n ${RED}$APP_NAME_LONG AppImage not found! Can't add launcher...${CRS}" - install_application - exit - fi -} - -#################### ALIAS #################### -add_alias() { - if ! [ -f "$SCRIPT_PATH/$SCRIPT_FILE_NAME" ] ; then - mkdir -p $SCRIPT_PATH - wget -P $TMP $REMOTE_SCRIPT_URL -q - chmod +x $TMP/$SCRIPT_FILE_NAME - mv $TMP/$SCRIPT_FILE_NAME $SCRIPT_PATH - fi - - if [ "$ACTIVE_SHELL" == "zsh" ] ; then - if [ "$(cat $HOME/.zshrc | grep "$ALIAS")" ] ; then - echo -e "\n ${LCY}$ALIAS${CRS} already present in ${CYN}$HOME/.zshrc${CRS}\n" - - else - echo "### $APP_NAME_LONG Alias zsh ###" >> $HOME/.zshrc - echo "alias $ALIAS=\"$SCRIPT_PATH/$SCRIPT_FILE_NAME\"" >> $HOME/.zshrc - echo >> $HOME/.zshrc - echo -e "\n ${LCY}$ALIAS${CRS} added to ${CYN}$HOME/.zshrc${CRS}\n" - fi - - elif [ "$ACTIVE_SHELL" == "bash" ] ; then - if [ "$(cat $HOME/.bashrc | grep "$ALIAS")" ] ; then - echo -e "\n ${LCY}$ALIAS${CRS} already present in ${CYN}$HOME/.bashrc${CRS}\n" - - else - echo "### $APP_NAME_LONG Alias bash ###" >> $HOME/.bashrc - echo "alias $ALIAS=\"$SCRIPT_PATH/$SCRIPT_FILE_NAME\"" >> $HOME/.bashrc - echo >> $HOME/.bashrc - echo -e "\n ${LCY}$ALIAS${CRS} added to ${CYN}$HOME/.bashrc${CRS}\n" - fi - - elif [ "$ACTIVE_SHELL" == "fish" ] ; then - if [ "$(cat $HOME/.config/fish/config.fish | grep "source $HOME/.config/fish/$ALIAS.fish")" ] ; then - echo -e "\n ${LCY}$ALIAS${CRS} already present in ${CYN}$HOME/.config/fish/config.fish${CRS}\n" - - else - echo "### $APP_NAME_LONG Alias FISH ###" > $HOME/.config/fish/$ALIAS.fish - echo >> $HOME/.config/fish/$ALIAS.fish - echo "function $ALIAS" >> $HOME/.config/fish/$ALIAS.fish - echo " $SCRIPT_PATH/$SCRIPT_FILE_NAME \$argv" >> $HOME/.config/fish/$ALIAS.fish - echo "end" >> $HOME/.config/fish/$ALIAS.fish - echo >> $HOME/.config/fish/$ALIAS.fish - echo "source $HOME/.config/fish/$ALIAS.fish" >> $HOME/.config/fish/config.fish - echo -e "\n ${LCY}$ALIAS ${CRS}added to ${CYN}$HOME/.config/fish/config.fish${CRS}\n" - fi - - else - echo -e "\n ${LCY}$ACTIVE_SHELL${RED}shell is not yet supported!${CRS}\n" - echo -e " ${CRS}Working implementation are available for bash, zsh & fish!${CRS}\n" - fi -} - -#################### 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" - exit - - elif [ -z "$LOCAL_VERSION" ] ; then - echo -e "\n ${RED}Empty version tag from ${CYN}local AppImage${RED}! Can't compare, exiting...${CRS}\n" - exit - fi - - ### COMPARE LOCAL & REMOTE VERSION - LOCAL_VERSION_NUM=$(echo $LOCAL_VERSION | tr -d .) - APP_SOURCE_VERSION_NUM=$(echo $APP_SOURCE_VERSION | tr -d .) - - if [ "$APP_SOURCE_VERSION" == "$LOCAL_VERSION" ] ; then - echo -e "\n ${GRN}$APP_NAME_LONG is already up-to-date!${CRS}\n" - - elif [ "$APP_SOURCE_VERSION_NUM" -gt "$LOCAL_VERSION_NUM" ] ; then - echo -e "\n ${LCY}$APP_NAME_LONG is updatable!${CRS}\n" - app_version_info - - while true ; do - read -p " Download and update $APP_NAME_LONG from $APP_SOURCE? (Y/n) : " CONFIRM - - if [[ "$CONFIRM" == "" || "$CONFIRM" == "y" || "$CONFIRM" == "Y" ]] ; then - DOWNLOAD_URL=$(curl -s $APP_SOURCE_URL | grep "browser_download_url" | grep "$ARCH.$FILE_EXTENSION" | grep -v "zsync" | tr -d \" | awk '{print $2}') - APP_SOURCE_FILENAME=$(curl -s $APP_SOURCE_URL | grep "browser_download_url" | grep "$ARCH.$FILE_EXTENSION" | grep -v "zsync" | tr -d \" | awk '{print $2}' | awk -F'/' '{print $9}') - mkdir -p $TMP - echo -e "\n - Downloading ${CYN}$APP_SOURCE_FILENAME${CRS}..." - wget -P $TMP $DOWNLOAD_URL -q - ${BACKUP_METHOD}_backup - chmod +x $TMP/$APP_SOURCE_FILENAME - mv $TMP/$APP_SOURCE_FILENAME $INSTALL_PATH/$APP_NAME.$FILE_EXTENSION - sed -i "s|X-AppImage-Version=.*|X-AppImage-Version=$($INSTALL_PATH/$APP_NAME.$FILE_EXTENSION --version | awk '{print $2}')|" $LAUNCHER_PATH/$APP_NAME.desktop - echo -e " ${GRN}$APP_NAME_LONG is up-to-date!${CRS}\n" - break - - elif [[ "$CONFIRM" == "n" || "$CONFIRM" == "N" ]] ; then - echo -e "\n ${RED}Cancelled!${CRS}\n" - exit - - else - echo -e "\n ${YEL}Invalid response!${CRS}\n" - fi - done - - else - echo -e "\n ${RED}Version tags malformed or you are using a Beta version!${CRS}\n" - app_version_info - echo -e " ${RED}Update failed... Exiting...${CRS}\n" - exit - fi -} - -#################### BACKUP #################### -call_backup() { - 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 - read -p " Overwrite backup? (y/N) : " OVERWRITE_BACKUP - - if [[ "$OVERWRITE_BACKUP" == "" || "$OVERWRITE_BACKUP" == "n" || "$OVERWRITE_BACKUP" == "N" ]] ; then - echo -e "\n ${YEL}Skipping backup process...${CRS}\n" - break - - elif [[ "$OVERWRITE_BACKUP" == "y" || "$OVERWRITE_BACKUP" == "Y" ]] ; then - echo -e "\n ${YEL}Overwriting backup...${CRS}" - 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 - 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 - - if [ -d "$BACKUP_ITEM" ] ; then - mkdir -p $TMP/backup - cp -r $BACKUP_ITEM $TMP/backup - - elif [ -f "$BACKUP_ITEM" ] ; then - mkdir -p $TMP/backup - cp $BACKUP_ITEM $TMP/backup - fi - done - - backup_logger -} - -script_backup() { - if [ -d "$SCRIPT_PATH" ] ; then - BACKUPABLE=("$SCRIPT_PATH/$SCRIPT_FILE_NAME" "$SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME") - echo -e "\n - ${CRS}Collecting files for ${CYN}$BACKUP_METHOD${CRS} backup...${CRS}" - backup_file_collector - pack_backup - - else - echo -e " ${YEL}Nothing to back up...${CRS}" - fi -} - -app_backup() { - if [ -f "$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION" ] ; then - BACKUPABLE=("$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION") - echo -e "\n - ${CRS}Collecting files for ${CYN}$BACKUP_METHOD${CRS} backup...${CRS}" - backup_file_collector - pack_backup - - else - echo -e " ${YEL}Nothing to back up...${CRS}" - fi -} - -config_backup() { - if [[ -d "$LAUNCHER_PATH" || -d $APP_CONFIG_PATH ]] ; then - BACKUPABLE=("$LAUNCHER_PATH/$APP_NAME.desktop" "$APP_CONFIG_PATH") - echo -e "\n - ${CRS}Collecting files for ${CYN}$BACKUP_METHOD${CRS} backup...${CRS}" - backup_file_collector - pack_backup - - else - echo -e " ${YEL}Nothing to back up...${CRS}" - fi -} - -full_backup() { - if [[ -d "$INSTALL_PATH" || -d "$SCRIPT_PATH" || -d $APP_CONFIG_PATH ]] ; then - BACKUPABLE=("$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") - echo -e "\n - ${CRS}Collecting files for ${CYN}$BACKUP_METHOD${CRS} backup...${CRS}" - backup_file_collector - pack_backup - - else - echo -e " ${YEL}Nothing to back up...${CRS}" - fi -} - -pack_backup() { - if [ -d "$TMP/backup" ] ; then - CWD=$(pwd) - cd $TMP/backup - - if [[ -f "*.sh" ]] ; then - chmod -x *.sh - - elif [[ -f "*.$FILE_EXTENSION" ]] ; then - chmod -x *.$FILE_EXTENSION - fi - - if [ "$BACKUP_COMPRESSION_OVERRIDE" ] ; then - BACKUP_COMPRESSION=$BACKUP_COMPRESSION_OVERRIDE - - else - COMPRESSION_METHOD=("pbzip2" "gzip" "bzip2" "zip") - - until [ "$BACKUP_COMPRESSION" ] ; do - for COMPRESSION_TYPE in "${COMPRESSION_METHOD[@]}" ; do - - if command -v $COMPRESSION_TYPE > /dev/null 2>&1 ; then - BACKUP_COMPRESSION=$COMPRESSION_TYPE - break - fi - done - done - fi - - echo -e "\n - ${CRS}Packing backup archive with ${CYN}$BACKUP_COMPRESSION${CRS}...${CRS}\n" - - if [ "$BACKUP_COMPRESSION" == "pbzip2" ] ; then - tar -cf $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar * > /dev/null 2>&1 - pbzip2 $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar - mkdir -p $BACKUP_PATH - mv $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar.bz2 $BACKUP_PATH - cd $TMP && rm -rf backup - - elif [ "$BACKUP_COMPRESSION" == "gzip" ] ; then - tar -cf $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar * > /dev/null 2>&1 - gzip $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar - mkdir -p $BACKUP_PATH - mv $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar.gz $BACKUP_PATH - cd $TMP && rm -rf backup - - elif [ "$BACKUP_COMPRESSION" == "bzip2" ] ; then - tar -cf $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar * > /dev/null 2>&1 - bzip2 $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar - mkdir -p $BACKUP_PATH - mv $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar.bz2 $BACKUP_PATH - cd $TMP && rm -rf backup - - elif [ "$BACKUP_COMPRESSION" == "zip" ] ; then - tar -cf $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar * > /dev/null 2>&1 - zip -r $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar.zip $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar > /dev/null 2>&1 - mkdir -p $BACKUP_PATH - mv $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar.zip $BACKUP_PATH - cd $TMP && rm -rf backup - - else - echo -e " ${YEL}No supported compression method detected! Copying backup uncompressed...${CRS}\n" - mkdir -p $BACKUP_PATH - mv $TMP/backup $BACKUP_PATH/$APP_NAME.$BACKUP_METHOD.backup_$DATE - cd $TMP && rm -rf backup - fi - - echo -e " - ${CRS}Backup stored in ${CYN}$BACKUP_PATH${CRS}...${CRS}\n" - cd $CWD - 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 - 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 - - while true ; do - read -p " Remove $APP_NAME_LONG incl. backups, configuration and launcher? (Y/n) : " CONFIRM_REMOVE - - if [[ "$CONFIRM_REMOVE" == "" || "$CONFIRM_REMOVE" == "y" || "$CONFIRM_REMOVE" == "Y" ]] ; then - REMOVABLE=("$INSTALL_PATH" "$LAUNCHER_PATH/$APP_NAME.desktop" "$APP_CONFIG_PATH" "$SCRIPT_PATH/$SCRIPT_FILE_NAME" "$SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME") - echo -e "\n - ${CRS}Removing ${CYN}$APP_NAME_LONG${CRS} files, directories and configuration...${CRS}" - - for RM_PATH in "${REMOVABLE[@]}" ; do - if [[ -f "$RM_PATH" || -d "$RM_PATH" ]] ; then - rm -rf "$RM_PATH" - fi - done - - shell_check - - if [ "$ACTIVE_SHELL" == "zsh" ] ; then - if [ "$(cat $HOME/.zshrc | grep "$ALIAS")" ] ; then - sed -i "/$APP_NAME_LONG/d" $HOME/.zshrc - sed -i "/$ALIAS/d" $HOME/.zshrc - echo -e "\n - Alias removed from ${CYN}$ACTIVE_SHELL${CRS}" - fi - - elif [ "$ACTIVE_SHELL" == "bash" ] ; then - if [ "$(cat $HOME/.bashrc | grep "$ALIAS")" ] ; then - sed -i "/$APP_NAME_LONG/d" $HOME/.bashrc - sed -i "/$ALIAS/d" $HOME/.bashrc - echo -e "\n - Alias removed from ${CYN}$ACTIVE_SHELL${CRS}" - fi - - elif [ "$ACTIVE_SHELL" == "fish" ] ; then - if [ "$(cat $HOME/.config/fish/config.fish | grep "source $HOME/.config/fish/$ALIAS.fish")" ] ; then - sed -i "/$ALIAS/d" $HOME/.config/fish/config.fish - rm $HOME/.config/fish/$ALIAS.fish - echo -e "\n - Alias removed from ${CYN}$ACTIVE_SHELL${CRS}" - fi - fi - - echo -e "\n ${YEL}$APP_NAME_LONG removed!${CRS}\n" - break - - elif [[ "$CONFIRM_REMOVE" == "n" || "$CONFIRM_REMOVE" == "N" ]] ; then - echo -e "\n ${RED}Cancelled!${CRS}" - exit - - else - echo -e "\n ${YEL}Invalid response!${CRS}\n" - fi - done - - else - echo -e " ${RED}Can't remove $APP_NAME_LONG! ${CYN}$INSTALL_PATH ${RED}directory not found...${CRS}\n" - exit - fi -} - -#################### SCRIPT VERSION #################### -script_version() { - echo -e "\n ${CYN}$APP_NAME_LONG Helper Script Version : ${CRS}$SCRIPT_VERSION\n" -} - -#################### UPDATE SCRIPT #################### -scrip_version_info() { - echo -e " - ${CYN}Local Version :\t${CRS}$SCRIPT_VERSION" - echo -e " - ${CYN}Remote Version :\t${CRS}$REMOTE_SCRIPT_VERSION" - echo -e " - ${CYN}Update Branch :\t${CRS}$REMOTE_REPO_BRANCH\n" -} - -update_script() { - if ! [ -f "$SCRIPT_PATH/$SCRIPT_FILE_NAME" ] ; then - echo -e "\n ${YEL}$SCRIPT_FILE_NAME not found...${CRS}" - - while true ; do - echo - 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 - 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" - break - - elif [[ "$CONFIRM_SCRIPT_INSTALL" == "n" || "$CONFIRM_SCRIPT_INSTALL" == "N" ]] ; then - echo -e " ${RED}Cancelled!${CRS}\n" - exit - - else - echo -e " ${YEL}Invalid response!${CRS}\n" - fi - done - fi - - REMOTE_SCRIPT_VERSION=$(curl -s $REMOTE_SCRIPT_URL | grep -m 1 "SCRIPT_VERSION" | tr -d 'SCRIPT_VERSION="') - - ### 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" - 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" - exit - fi - - ### COMPARE LOCAL & REMOTE VERSION - SCRIPT_VERSION_NUM=$(echo $SCRIPT_VERSION | tr -d .) - REMOTE_SCRIPT_VERSION_NUM=$(echo $REMOTE_SCRIPT_VERSION | tr -d .) - - if [ "$REMOTE_SCRIPT_VERSION" == "$SCRIPT_VERSION" ] ; then - echo -e "\n ${GRN}$SCRIPT_FILE_NAME is already up-to-date!${CRS}\n" - - elif [ "$REMOTE_SCRIPT_VERSION_NUM" -gt "$SCRIPT_VERSION_NUM" ] ; then - echo -e "\n ${LCY}$SCRIPT_FILE_NAME is updatable!${CRS}\n" - scrip_version_info - - while true ; do - read -p " Update $SCRIPT_FILE_NAME? (Y/n) : " CONFIRM_SCRIPT_UPDATE - - if [[ "$CONFIRM_SCRIPT_UPDATE" == "" || "$CONFIRM_SCRIPT_UPDATE" == "y" || "$CONFIRM_SCRIPT_UPDATE" == "Y" ]] ; then - if ! [ -d "$BACKUP_PATH" ] ; then - mkdir -p $BACKUP_PATH - fi - mv $SCRIPT_PATH/$SCRIPT_FILE_NAME $BACKUP_PATH/$SCRIPT_FILE_NAME.old - mv $SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME $BACKUP_PATH/$AUTO_SCRIPT_FILE_NAME.old - 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 " ${GRN}$SCRIPT_FILE_NAME is up-to-date!${CRS}" - break - - elif [[ "$CONFIRM_SCRIPT_UPDATE" == "n" || "$CONFIRM_SCRIPT_UPDATE" == "N" ]] ; then - echo -e "\n ${RED}Cancelled!${CRS}\n" - break - - else - echo -e "\n ${YEL}Invalid response!${CRS}\n" - fi - done - - else - echo -e "\n ${RED}Version tags malformed or you are using a Beta version!${CRS}\n" - scrip_version_info - echo -e " ${RED}Updating script failed...${CRS}\n" - fi -} - -#################### 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" -} - -compare_version() { - 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}') - - if [ -z "$APP_SOURCE_VERSION" ] ; then - 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}\n" - exit - fi - - LOCAL_VERSION_NUM=$(echo $LOCAL_VERSION | tr -d .) - APP_SOURCE_VERSION_NUM=$(echo $APP_SOURCE_VERSION | tr -d .) - - if [ "$APP_SOURCE_VERSION" == "$LOCAL_VERSION" ] ; then - echo -e "\n ${GRN}$APP_NAME_LONG is up-to-date!${CRS}\n" - app_version_info - - elif [ "$APP_SOURCE_VERSION_NUM" -gt "$LOCAL_VERSION_NUM" ] ; then - echo -e "\n ${LCY}$APP_NAME_LONG is updatable!${CRS}\n" - app_version_info - - else - echo -e "\n ${RED}Version tags malformed or you are using a Beta version!${CRS}\n" - app_version_info - fi -} - -#################### 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 "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" - echo -e "\t-S\tUpdate $SCRIPT_FILE_NAME" - echo -e "\t-h\tPrint this help page\n" - echo -e "Configured directories:\n" - echo -e "\t${CYN}${INSTALL_PATH}${CRS}\t\tInstall location" - echo -e "\t${CYN}${LAUNCHER_PATH}${CRS}\tLauncher location" - echo -e "\t${CYN}${SCRIPT_PATH}${CRS}\t\t\tScript location\n" -} - -#################### EXIT CLEAN #################### -exit_clean() { - if [ -d "$TMP" ] ; then - rm -rf $TMP - fi - - exit -} - -########################### MAIN ########################### - -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}" - help - exit - fi - - case $OPTION in - i) - TARGET="INSTALL" - echo -e "\n ${YEL}Installing $APP_NAME_LONG...${CRS}\n" - if [ "$#" -gt "1" ] ; then - ALL_PARAMETER=$@ - - for PARAMETER in ${ALL_PARAMETER[@]} ; do - if [ -d "$PARAMETER" ] ; then - INSTALL_PATH=$PARAMETER - fi - done - fi - dependency_check - arch_check - path_correction - install_application - exit_clean ;; - - l) - echo -e "\n ${YEL}Adding $APP_NAME_LONG launcher...${CRS}" - dependency_check - local_check - add_launcher - exit_clean ;; - - a) - echo -e "\n ${YEL}Adding alias...${CRS}" - if [ "$#" -gt "1" ] ; then - ALL_PARAMETER=$@ - - for PARAMETER in ${ALL_PARAMETER[@]} ; do - if [ "$PARAMETER" ] ; then - ALIAS=$PARAMETER - fi - done - fi - shell_check - add_alias - exit ;; - - u) - echo -e "\n ${YEL}Updating $APP_NAME_LONG...${CRS}" - dependency_check - arch_check - local_check - update_application - exit_clean ;; - - b) - TARGET="BACKUP" - echo -e "\n ${YEL}Backing up $APP_NAME_LONG...${CRS}" - if [ "$#" -gt "1" ] ; then - ALL_PARAMETER=$@ - - for PARAMETER in ${ALL_PARAMETER[@]} ; do - if [[ "$PARAMETER" == "script" || "$PARAMETER" == "config" || "$PARAMETER" == "app" || "$PARAMETER" == "full" ]] ; then - BACKUP_METHOD=$PARAMETER - - elif [[ "$PARAMETER" == "pbzip2" || "$PARAMETER" == "gzip" || "$PARAMETER" == "bzip2" || "$PARAMETER" == "zip" ]] ; then - BACKUP_COMPRESSION_OVERRIDE=$PARAMETER - - elif [[ -d "$PARAMETER" || -d "$(pwd)/$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 ;; - - r) - echo -e "\n ${YEL}Removing $APP_NAME_LONG...${CRS}\n" - remove_application - exit ;; - - c) - echo -e "\n ${YEL}Comparing remote to local version...${CRS}" - dependency_check - local_check - compare_version - exit_clean ;; - - s) - script_version - exit ;; - - S) - echo -e "\n ${YEL}Updating script...${CRS}" - dependency_check - update_script - exit_clean ;; - - h) - help - exit ;; - - *) - echo -e "\n${YEL}Option ${RED}$1${YEL} not recognized... Refer to help below!${CRS}" - help - exit ;; - esac -done - -## ENVIRONMENT CHECK -dependency_check -arch_check - -## CHECK LOCAL INSTALL -local_check - -## UPDATE -update_application - -## CLEAN -exit_clean diff --git a/helium_helper_REMOTE_10032.sh b/helium_helper_REMOTE_10032.sh deleted file mode 100644 index a0c0218..0000000 --- a/helium_helper_REMOTE_10032.sh +++ /dev/null @@ -1,1102 +0,0 @@ -#!/bin/bash -# Helium BOWSER INSTALL & UPDATE SCRIPT ---> INTERACTIVE -########## PREREQUISITES ########### -set -e - -## SOME COLOR -CYN="\e[0;36m" -YEL="\e[0;33m" -RED="\e[0;31m" -GRN="\e[0;32m" -LCY="\e[1;36m" -WHT="\e[1;37m" -CRS="\e[0m" - -## GLOBAL VARIABLES -APP_NAME="Helium" -APP_NAME_LONG="Helium Web Browser" -FILE_EXTENSION="AppImage" -APP_SOURCE="GitHub" -ARCH_OVERRIDE="" -BACKUP_METHOD="full" -BACKUP_COMPRESSION_OVERRIDE="" -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.2" -ALIAS="helium-helper" -DATE=$(date +"%d%m%y") - -## LOCATIONS -TMP=/tmp/$APP_NAME -INSTALL_PATH=$HOME/.apps/$APP_NAME -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 -LOG=$LOG_PATH/log -LAUNCHER_PATH=$HOME/.local/share/applications -SCRIPT_PATH=$HOME/.local/bin - -## REMOTE LOCATIONS -REMOTE_REPO_BRANCH="main" -REMOTE_REPO_URL=https://git.h0ster.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 ############################ - -#################### DEPENDENCY CHECK #################### -cmd_query() { - if ! command -v $PACKAGE > /dev/null 2>&1 ; then - echo " - $PACKAGE" >> $TMP/missingDeps - fi -} - -dependency_check () { - DEPENDENCIES=("curl" "wget" "tar") - mkdir -p $TMP - - for PACKAGE in "${DEPENDENCIES[@]}" ; do - cmd_query "$PACKAGE" - - 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" - exit_clean - fi -} - -#################### SHELL CHECK #################### -shell_query() { - if [ "$(echo $SHELL | grep "$SHELL_OPTION")" ] ; then - ACTIVE_SHELL=$SHELL_OPTION - fi - -} - -shell_check() { - SHELLS=("bash" "fish" "zsh") - - for SHELL_OPTION in "${SHELLS[@]}" ; do - shell_query "$SHELL_OPTION" - done -} - -#################### ARCH CHECK #################### -arch_check() { - if [ "$ARCH_OVERRIDE" ] ; then - ARCH=$ARCH_OVERRIDE - - else - ARCH=$(uname -m) - if [ "$ARCH" == "aarch64" ] ; then - ARCH="arm64" - - elif [ "$ARCH" == "amd64" ] ; then - ARCH="x86_64" - fi - fi - - if ! [[ "$ARCH" == "arm64" || "$ARCH" == "x86_64" ]] ; then - echo -e "\n ${CYN}$ARCH ${RED}unsupported! Only ${CYN}x86_68 ${RED}or ${CYN}arm64 ${RED}architecture are supported!${CRS}\n" - exit - fi -} - -#################### LOCAL INSTALL CHECK #################### -local_check() { - if ! [ -d "$INSTALL_PATH" ] ; then - echo -e "\n ${YEL}$APP_NAME_LONG directory not found!${CRS}\n" - install_application - exit - - elif ! [ -f "$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION" ] ; then - echo -e "\n ${YEL}$APP_NAME_LONG directory found but no executable named ${CYN}$APP_NAME.$FILE_EXTENSION${YEL}!${CRS}\n" - install_application - exit - 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_application() { - if [ -f "$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION" ] ; then - echo -e " ${YEL}$APP_NAME_LONG AppImage found! Trying to update...${CRS}" - update_application - exit - fi - - while true ; do - read -p " Download and install $APP_NAME_LONG from $APP_SOURCE? (Y/n) : " CONFIRM_INSTALL - - if [[ "$CONFIRM_INSTALL" == "" || "$CONFIRM_INSTALL" == "y" || "$CONFIRM_INSTALL" == "Y" ]] ; then - DOWNLOAD_URL=$(curl -s $APP_SOURCE_URL | grep "browser_download_url" | grep "$ARCH.$FILE_EXTENSION" | grep -v "zsync" | tr -d \" | awk '{print $2}') - APP_SOURCE_FILENAME=$(curl -s $APP_SOURCE_URL | grep "browser_download_url" | grep "$ARCH.$FILE_EXTENSION" | grep -v "zsync" | tr -d \" | awk '{print $2}' | awk -F'/' '{print $9}') - echo -e "\n - Downloading ${CYN}$APP_SOURCE_FILENAME${CRS}..." - wget -P $TMP $DOWNLOAD_URL -q - chmod +x $TMP/$APP_SOURCE_FILENAME - mkdir -p $INSTALL_PATH - mv $TMP/$APP_SOURCE_FILENAME $INSTALL_PATH/$APP_NAME.$FILE_EXTENSION - add_launcher - echo -e "\n ${GRN}$APP_NAME_LONG is installed!${CRS}\n" - break - - elif [[ "$CONFIRM_INSTALL" == "n" || "$CONFIRM_INSTALL" == "N" ]] ; then - echo -e "\n ${RED}Cancelled!${CRS}\n" - break - - else - echo -e "\n ${YEL}Invalid response!${CRS}\n" - fi - done -} - -#################### LAUNCHER #################### -add_launcher() { - if [ -f "$LAUNCHER_PATH/$APP_NAME.desktop" ] ; then - echo -e "\n ${YEL}${APP_NAME}.desktop already exists!${CRS}" - - elif [ -f "$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION" ] ; then - while true ; do - echo - read -p " Add $APP_NAME_LONG launcher to $LAUNCHER_PATH? (Y/n) : " CONFIRM_LAUNCHER - - if [[ "$CONFIRM_LAUNCHER" == "" || "$CONFIRM_LAUNCHER" == "y" || "$CONFIRM_LAUNCHER" == "Y" ]] ; then - LAUNCHER_URL=$REMOTE_REPO_URL/assets/launcher/helium.desktop.template - ICON_URL=$REMOTE_REPO_URL/assets/icon/helium.png - AUTO_SCRIPT_URL=$REMOTE_REPO_URL/$AUTO_SCRIPT_FILE_NAME - LOCAL_VERSION=$($INSTALL_PATH/$APP_NAME.$FILE_EXTENSION --version | awk '{print $2}') - mkdir -p $LAUNCHER_PATH $SCRIPT_PATH $BACKUP_PATH $ASSET_PATH/icon - if ! [ -f "$SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME" ] ; then - echo -e "\n - Downloading ${CYN}$AUTO_SCRIPT_FILE_NAME${CRS}..." - wget -P $TMP $AUTO_SCRIPT_URL -q - chmod +x $TMP/$AUTO_SCRIPT_FILE_NAME - mv $TMP/$AUTO_SCRIPT_FILE_NAME $SCRIPT_PATH - fi - - echo -e "\n - Downloading ${CYN}launcher files${CRS}..." - wget -P $TMP $LAUNCHER_URL -q - wget -P $TMP $ICON_URL -q - sed -i "s|%APP_LOCATION%|$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION|" $TMP/helium.desktop.template - sed -i "s|%ICON_LOCATION%|$ASSET_PATH/icon/helium.png|" $TMP/helium.desktop.template - sed -i "s|%APP_VERSION%|$LOCAL_VERSION|" $TMP/helium.desktop.template - sed -i "s|%QUIET_UPDATE_SCRIPT%|$SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME|" $TMP/helium.desktop.template - sed -i "s|%SCRIPT_UPDATE%|$SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME -S|" $TMP/helium.desktop.template - sed -i "s|%OPEN_LOG_EDITOR%|$SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME -L|" $TMP/helium.desktop.template - mv $TMP/helium.desktop.template $LAUNCHER_PATH/$APP_NAME.desktop - mv $TMP/helium.png $ASSET_PATH/icon - echo -e "\n ${GRN}$APP_NAME_LONG launcher is set up!${CRS}" - break - - elif [[ "$CONFIRM_LAUNCHER" == "n" || "$CONFIRM_LAUNCHER" == "N" ]] ; then - echo -e " ${RED}Launcher not added!${CRS}" - break - - else - echo -e " ${YEL}Invalid response!${CRS}\n" - fi - done - - else - echo -e "\n ${RED}$APP_NAME_LONG AppImage not found! Can't add launcher...${CRS}" - install_application - exit - fi -} - -#################### ALIAS #################### -add_alias() { - if ! [ -f "$SCRIPT_PATH/$SCRIPT_FILE_NAME" ] ; then - mkdir -p $SCRIPT_PATH - wget -P $TMP $REMOTE_SCRIPT_URL -q - chmod +x $TMP/$SCRIPT_FILE_NAME - mv $TMP/$SCRIPT_FILE_NAME $SCRIPT_PATH - fi - - if [ "$ACTIVE_SHELL" == "zsh" ] ; then - if [ "$(cat $HOME/.zshrc | grep "$ALIAS")" ] ; then - echo -e "\n ${LCY}$ALIAS${CRS} already present in ${CYN}$HOME/.zshrc${CRS}\n" - - else - echo "### $APP_NAME_LONG Alias zsh ###" >> $HOME/.zshrc - echo "alias $ALIAS=\"$SCRIPT_PATH/$SCRIPT_FILE_NAME\"" >> $HOME/.zshrc - echo >> $HOME/.zshrc - echo -e "\n ${LCY}$ALIAS${CRS} added to ${CYN}$HOME/.zshrc${CRS}\n" - fi - - elif [ "$ACTIVE_SHELL" == "bash" ] ; then - if [ "$(cat $HOME/.bashrc | grep "$ALIAS")" ] ; then - echo -e "\n ${LCY}$ALIAS${CRS} already present in ${CYN}$HOME/.bashrc${CRS}\n" - - else - echo "### $APP_NAME_LONG Alias bash ###" >> $HOME/.bashrc - echo "alias $ALIAS=\"$SCRIPT_PATH/$SCRIPT_FILE_NAME\"" >> $HOME/.bashrc - echo >> $HOME/.bashrc - echo -e "\n ${LCY}$ALIAS${CRS} added to ${CYN}$HOME/.bashrc${CRS}\n" - fi - - elif [ "$ACTIVE_SHELL" == "fish" ] ; then - if [ "$(cat $HOME/.config/fish/config.fish | grep "source $HOME/.config/fish/$ALIAS.fish")" ] ; then - echo -e "\n ${LCY}$ALIAS${CRS} already present in ${CYN}$HOME/.config/fish/config.fish${CRS}\n" - - else - echo "### $APP_NAME_LONG Alias FISH ###" > $HOME/.config/fish/$ALIAS.fish - echo >> $HOME/.config/fish/$ALIAS.fish - echo "function $ALIAS" >> $HOME/.config/fish/$ALIAS.fish - echo " $SCRIPT_PATH/$SCRIPT_FILE_NAME \$argv" >> $HOME/.config/fish/$ALIAS.fish - echo "end" >> $HOME/.config/fish/$ALIAS.fish - echo >> $HOME/.config/fish/$ALIAS.fish - echo "source $HOME/.config/fish/$ALIAS.fish" >> $HOME/.config/fish/config.fish - echo -e "\n ${LCY}$ALIAS ${CRS}added to ${CYN}$HOME/.config/fish/config.fish${CRS}\n" - fi - - else - echo -e "\n ${LCY}$ACTIVE_SHELL${RED}shell is not yet supported!${CRS}\n" - echo -e " ${CRS}Working implementation are available for bash, zsh & fish!${CRS}\n" - fi -} - -#################### 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" - exit - - elif [ -z "$LOCAL_VERSION" ] ; then - echo -e "\n ${RED}Empty version tag from ${CYN}local AppImage${RED}! Can't compare, exiting...${CRS}\n" - 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 - echo -e "\n ${LCY}$APP_NAME_LONG is updatable!${CRS}\n" - app_version_info - - while true ; do - read -p " Download and update $APP_NAME_LONG from $APP_SOURCE? (Y/n) : " CONFIRM - - if [[ "$CONFIRM" == "" || "$CONFIRM" == "y" || "$CONFIRM" == "Y" ]] ; then - DOWNLOAD_URL=$(curl -s $APP_SOURCE_URL | grep "browser_download_url" | grep "$ARCH.$FILE_EXTENSION" | grep -v "zsync" | tr -d \" | awk '{print $2}') - APP_SOURCE_FILENAME=$(curl -s $APP_SOURCE_URL | grep "browser_download_url" | grep "$ARCH.$FILE_EXTENSION" | grep -v "zsync" | tr -d \" | awk '{print $2}' | awk -F'/' '{print $9}') - mkdir -p $TMP - echo -e "\n - Downloading ${CYN}$APP_SOURCE_FILENAME${CRS}..." - wget -P $TMP $DOWNLOAD_URL -q - ${BACKUP_METHOD}_backup - chmod +x $TMP/$APP_SOURCE_FILENAME - mv $TMP/$APP_SOURCE_FILENAME $INSTALL_PATH/$APP_NAME.$FILE_EXTENSION - sed -i "s|X-AppImage-Version=.*|X-AppImage-Version=$($INSTALL_PATH/$APP_NAME.$FILE_EXTENSION --version | awk '{print $2}')|" $LAUNCHER_PATH/$APP_NAME.desktop - echo -e " ${GRN}$APP_NAME_LONG is up-to-date!${CRS}\n" - break - - elif [[ "$CONFIRM" == "n" || "$CONFIRM" == "N" ]] ; then - echo -e "\n ${RED}Cancelled!${CRS}\n" - exit - - else - echo -e "\n ${YEL}Invalid response!${CRS}\n" - fi - done - - else - echo -e "\n ${RED}Version tags malformed or you are using a Beta version!${CRS}\n" - app_version_info - echo -e " ${RED}Update failed... Exiting...${CRS}\n" - exit - fi -} - -#################### BACKUP #################### -call_backup() { - 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 - read -p " Overwrite backup? (y/N) : " OVERWRITE_BACKUP - - if [[ "$OVERWRITE_BACKUP" == "" || "$OVERWRITE_BACKUP" == "n" || "$OVERWRITE_BACKUP" == "N" ]] ; then - echo -e "\n ${YEL}Skipping backup process...${CRS}\n" - break - - elif [[ "$OVERWRITE_BACKUP" == "y" || "$OVERWRITE_BACKUP" == "Y" ]] ; then - echo -e "\n ${YEL}Overwriting backup...${CRS}" - 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 - 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 - - if [ -d "$BACKUP_ITEM" ] ; then - mkdir -p $TMP/backup - cp -r $BACKUP_ITEM $TMP/backup - - elif [ -f "$BACKUP_ITEM" ] ; then - mkdir -p $TMP/backup - cp $BACKUP_ITEM $TMP/backup - fi - done - - backup_logger -} - -script_backup() { - if [ -d "$SCRIPT_PATH" ] ; then - BACKUPABLE=("$SCRIPT_PATH/$SCRIPT_FILE_NAME" "$SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME") - echo -e "\n - ${CRS}Collecting files for ${CYN}$BACKUP_METHOD${CRS} backup...${CRS}" - backup_file_collector - pack_backup - - else - echo -e " ${YEL}Nothing to back up...${CRS}" - fi -} - -app_backup() { - if [ -f "$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION" ] ; then - BACKUPABLE=("$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION") - echo -e "\n - ${CRS}Collecting files for ${CYN}$BACKUP_METHOD${CRS} backup...${CRS}" - backup_file_collector - pack_backup - - else - echo -e " ${YEL}Nothing to back up...${CRS}" - fi -} - -config_backup() { - if [[ -d "$LAUNCHER_PATH" || -d $APP_CONFIG_PATH ]] ; then - BACKUPABLE=("$LAUNCHER_PATH/$APP_NAME.desktop" "$APP_CONFIG_PATH") - echo -e "\n - ${CRS}Collecting files for ${CYN}$BACKUP_METHOD${CRS} backup...${CRS}" - backup_file_collector - pack_backup - - else - echo -e " ${YEL}Nothing to back up...${CRS}" - fi -} - -full_backup() { - if [[ -d "$INSTALL_PATH" || -d "$SCRIPT_PATH" || -d $APP_CONFIG_PATH ]] ; then - BACKUPABLE=("$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") - echo -e "\n - ${CRS}Collecting files for ${CYN}$BACKUP_METHOD${CRS} backup...${CRS}" - backup_file_collector - pack_backup - - else - echo -e " ${YEL}Nothing to back up...${CRS}" - fi -} - -pack_backup() { - if [ -d "$TMP/backup" ] ; then - CWD=$(pwd) - cd $TMP/backup - - if [[ -f "*.sh" ]] ; then - chmod -x *.sh - - elif [[ -f "*.$FILE_EXTENSION" ]] ; then - chmod -x *.$FILE_EXTENSION - fi - - if [ "$BACKUP_COMPRESSION_OVERRIDE" ] ; then - BACKUP_COMPRESSION=$BACKUP_COMPRESSION_OVERRIDE - - else - COMPRESSION_METHOD=("pbzip2" "gzip" "bzip2" "zip") - - until [ "$BACKUP_COMPRESSION" ] ; do - for COMPRESSION_TYPE in "${COMPRESSION_METHOD[@]}" ; do - - if command -v $COMPRESSION_TYPE > /dev/null 2>&1 ; then - BACKUP_COMPRESSION=$COMPRESSION_TYPE - break - fi - done - done - fi - - echo -e "\n - ${CRS}Packing backup archive with ${CYN}$BACKUP_COMPRESSION${CRS}...${CRS}\n" - - if [ "$BACKUP_COMPRESSION" == "pbzip2" ] ; then - tar -cf $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar * > /dev/null 2>&1 - pbzip2 $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar - mkdir -p $BACKUP_PATH - mv $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar.bz2 $BACKUP_PATH - cd $TMP && rm -rf backup - - elif [ "$BACKUP_COMPRESSION" == "gzip" ] ; then - tar -cf $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar * > /dev/null 2>&1 - gzip $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar - mkdir -p $BACKUP_PATH - mv $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar.gz $BACKUP_PATH - cd $TMP && rm -rf backup - - elif [ "$BACKUP_COMPRESSION" == "bzip2" ] ; then - tar -cf $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar * > /dev/null 2>&1 - bzip2 $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar - mkdir -p $BACKUP_PATH - mv $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar.bz2 $BACKUP_PATH - cd $TMP && rm -rf backup - - elif [ "$BACKUP_COMPRESSION" == "zip" ] ; then - tar -cf $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar * > /dev/null 2>&1 - zip -r $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar.zip $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar > /dev/null 2>&1 - mkdir -p $BACKUP_PATH - mv $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar.zip $BACKUP_PATH - cd $TMP && rm -rf backup - - else - echo -e " ${YEL}No supported compression method detected! Copying backup uncompressed...${CRS}\n" - mkdir -p $BACKUP_PATH - mv $TMP/backup $BACKUP_PATH/$APP_NAME.$BACKUP_METHOD.backup_$DATE - cd $TMP && rm -rf backup - fi - - echo -e " - ${CRS}Backup stored in ${CYN}$BACKUP_PATH${CRS}...${CRS}\n" - cd $CWD - 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 - 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 - - while true ; do - read -p " Remove $APP_NAME_LONG incl. backups, configuration and launcher? (Y/n) : " CONFIRM_REMOVE - - if [[ "$CONFIRM_REMOVE" == "" || "$CONFIRM_REMOVE" == "y" || "$CONFIRM_REMOVE" == "Y" ]] ; then - REMOVABLE=("$INSTALL_PATH" "$LAUNCHER_PATH/$APP_NAME.desktop" "$APP_CONFIG_PATH" "$SCRIPT_PATH/$SCRIPT_FILE_NAME" "$SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME") - echo -e "\n - ${CRS}Removing ${CYN}$APP_NAME_LONG${CRS} files, directories and configuration...${CRS}" - - for RM_PATH in "${REMOVABLE[@]}" ; do - if [[ -f "$RM_PATH" || -d "$RM_PATH" ]] ; then - rm -rf "$RM_PATH" - fi - done - - shell_check - - if [ "$ACTIVE_SHELL" == "zsh" ] ; then - if [ "$(cat $HOME/.zshrc | grep "$ALIAS")" ] ; then - sed -i "/$APP_NAME_LONG/d" $HOME/.zshrc - sed -i "/$ALIAS/d" $HOME/.zshrc - echo -e "\n - Alias removed from ${CYN}$ACTIVE_SHELL${CRS}" - fi - - elif [ "$ACTIVE_SHELL" == "bash" ] ; then - if [ "$(cat $HOME/.bashrc | grep "$ALIAS")" ] ; then - sed -i "/$APP_NAME_LONG/d" $HOME/.bashrc - sed -i "/$ALIAS/d" $HOME/.bashrc - echo -e "\n - Alias removed from ${CYN}$ACTIVE_SHELL${CRS}" - fi - - elif [ "$ACTIVE_SHELL" == "fish" ] ; then - if [ "$(cat $HOME/.config/fish/config.fish | grep "source $HOME/.config/fish/$ALIAS.fish")" ] ; then - sed -i "/$ALIAS/d" $HOME/.config/fish/config.fish - rm $HOME/.config/fish/$ALIAS.fish - echo -e "\n - Alias removed from ${CYN}$ACTIVE_SHELL${CRS}" - fi - fi - - echo -e "\n ${YEL}$APP_NAME_LONG removed!${CRS}\n" - break - - elif [[ "$CONFIRM_REMOVE" == "n" || "$CONFIRM_REMOVE" == "N" ]] ; then - echo -e "\n ${RED}Cancelled!${CRS}" - exit - - else - echo -e "\n ${YEL}Invalid response!${CRS}\n" - fi - done - - else - echo -e " ${RED}Can't remove $APP_NAME_LONG! ${CYN}$INSTALL_PATH ${RED}directory not found...${CRS}\n" - exit - fi -} - -#################### SCRIPT VERSION #################### -script_version() { - echo -e "\n ${CYN}$APP_NAME_LONG Helper Script Version : ${CRS}$SCRIPT_VERSION\n" -} - -#################### UPDATE SCRIPT #################### -scrip_version_info() { - echo -e " - ${CYN}Local Version :\t${CRS}$SCRIPT_VERSION" - echo -e " - ${CYN}Remote Version :\t${CRS}$REMOTE_SCRIPT_VERSION" - echo -e " - ${CYN}Update Branch :\t${CRS}$REMOTE_REPO_BRANCH\n" -} - -update_script() { - if ! [ -f "$SCRIPT_PATH/$SCRIPT_FILE_NAME" ] ; then - echo -e "\n ${YEL}$SCRIPT_FILE_NAME not found...${CRS}" - - while true ; do - echo - 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 - 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" - break - - elif [[ "$CONFIRM_SCRIPT_INSTALL" == "n" || "$CONFIRM_SCRIPT_INSTALL" == "N" ]] ; then - echo -e " ${RED}Cancelled!${CRS}\n" - exit - - else - echo -e " ${YEL}Invalid response!${CRS}\n" - fi - done - fi - - REMOTE_SCRIPT_VERSION=$(curl -s $REMOTE_SCRIPT_URL | grep -m 1 "SCRIPT_VERSION" | tr -d 'SCRIPT_VERSION="') - - ### 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" - 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" - exit - fi - - ### COMPARE LOCAL & REMOTE VERSION - SCRIPT_VERSION_NUM=$(echo $SCRIPT_VERSION | tr -d .) - REMOTE_SCRIPT_VERSION_NUM=$(echo $REMOTE_SCRIPT_VERSION | tr -d .) - - if [ "$REMOTE_SCRIPT_VERSION" == "$SCRIPT_VERSION" ] ; then - echo -e "\n ${GRN}$SCRIPT_FILE_NAME is already up-to-date!${CRS}\n" - - elif [ "$REMOTE_SCRIPT_VERSION_NUM" -gt "$SCRIPT_VERSION_NUM" ] ; then - echo -e "\n ${LCY}$SCRIPT_FILE_NAME is updatable!${CRS}\n" - scrip_version_info - - while true ; do - read -p " Update $SCRIPT_FILE_NAME? (Y/n) : " CONFIRM_SCRIPT_UPDATE - - if [[ "$CONFIRM_SCRIPT_UPDATE" == "" || "$CONFIRM_SCRIPT_UPDATE" == "y" || "$CONFIRM_SCRIPT_UPDATE" == "Y" ]] ; then - if ! [ -d "$BACKUP_PATH" ] ; then - mkdir -p $BACKUP_PATH - fi - mv $SCRIPT_PATH/$SCRIPT_FILE_NAME $BACKUP_PATH/$SCRIPT_FILE_NAME.old - mv $SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME $BACKUP_PATH/$AUTO_SCRIPT_FILE_NAME.old - 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 " ${GRN}$SCRIPT_FILE_NAME is up-to-date!${CRS}" - break - - elif [[ "$CONFIRM_SCRIPT_UPDATE" == "n" || "$CONFIRM_SCRIPT_UPDATE" == "N" ]] ; then - echo -e "\n ${RED}Cancelled!${CRS}\n" - break - - else - echo -e "\n ${YEL}Invalid response!${CRS}\n" - fi - done - - else - echo -e "\n ${RED}Version tags malformed or you are using a Beta version!${CRS}\n" - scrip_version_info - echo -e " ${RED}Updating script failed...${CRS}\n" - fi -} - -#################### 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" -} - -compare_version() { - 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}') - - if [ -z "$APP_SOURCE_VERSION" ] ; then - 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}\n" - exit - fi - - LOCAL_VERSION_NUM=$(echo $LOCAL_VERSION | tr -d .) - APP_SOURCE_VERSION_NUM=$(echo $APP_SOURCE_VERSION | tr -d .) - - if [ "$APP_SOURCE_VERSION" == "$LOCAL_VERSION" ] ; then - echo -e "\n ${GRN}$APP_NAME_LONG is up-to-date!${CRS}\n" - app_version_info - - elif [ "$APP_SOURCE_VERSION_NUM" -gt "$LOCAL_VERSION_NUM" ] ; then - echo -e "\n ${LCY}$APP_NAME_LONG is updatable!${CRS}\n" - app_version_info - - else - echo -e "\n ${RED}Version tags malformed or you are using a Beta version!${CRS}\n" - app_version_info - fi -} - -#################### 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 "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" - echo -e "\t-S\tUpdate $SCRIPT_FILE_NAME" - echo -e "\t-h\tPrint this help page\n" - echo -e "Configured directories:\n" - echo -e "\t${CYN}${INSTALL_PATH}${CRS}\t\tInstall location" - echo -e "\t${CYN}${LAUNCHER_PATH}${CRS}\tLauncher location" - echo -e "\t${CYN}${SCRIPT_PATH}${CRS}\t\t\tScript location\n" -} - -#################### EXIT CLEAN #################### -exit_clean() { - if [ -d "$TMP" ] ; then - rm -rf $TMP - fi - - exit -} - -########################### MAIN ########################### - -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}" - help - exit - fi - - case $OPTION in - i) - TARGET="INSTALL" - echo -e "\n ${YEL}Installing $APP_NAME_LONG...${CRS}\n" - if [ "$#" -gt "1" ] ; then - ALL_PARAMETER=$@ - - for PARAMETER in ${ALL_PARAMETER[@]} ; do - if [ -d "$PARAMETER" ] ; then - INSTALL_PATH=$PARAMETER - fi - done - fi - dependency_check - arch_check - path_correction - install_application - exit_clean ;; - - l) - echo -e "\n ${YEL}Adding $APP_NAME_LONG launcher...${CRS}" - dependency_check - local_check - add_launcher - exit_clean ;; - - a) - echo -e "\n ${YEL}Adding alias...${CRS}" - if [ "$#" -gt "1" ] ; then - ALL_PARAMETER=$@ - - for PARAMETER in ${ALL_PARAMETER[@]} ; do - if [ "$PARAMETER" ] ; then - ALIAS=$PARAMETER - fi - done - fi - shell_check - add_alias - exit ;; - - u) - echo -e "\n ${YEL}Updating $APP_NAME_LONG...${CRS}" - dependency_check - arch_check - local_check - update_application - exit_clean ;; - - b) - TARGET="BACKUP" - echo -e "\n ${YEL}Backing up $APP_NAME_LONG...${CRS}" - if [ "$#" -gt "1" ] ; then - ALL_PARAMETER=$@ - - for PARAMETER in ${ALL_PARAMETER[@]} ; do - if [[ "$PARAMETER" == "script" || "$PARAMETER" == "config" || "$PARAMETER" == "app" || "$PARAMETER" == "full" ]] ; then - BACKUP_METHOD=$PARAMETER - - elif [[ "$PARAMETER" == "pbzip2" || "$PARAMETER" == "gzip" || "$PARAMETER" == "bzip2" || "$PARAMETER" == "zip" ]] ; then - BACKUP_COMPRESSION_OVERRIDE=$PARAMETER - - elif [[ -d "$PARAMETER" || -d "$(pwd)/$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 ;; - - r) - echo -e "\n ${YEL}Removing $APP_NAME_LONG...${CRS}\n" - remove_application - exit ;; - - c) - echo -e "\n ${YEL}Comparing remote to local version...${CRS}" - dependency_check - local_check - compare_version - exit_clean ;; - - s) - script_version - exit ;; - - S) - echo -e "\n ${YEL}Updating script...${CRS}" - dependency_check - update_script - exit_clean ;; - - h) - help - exit ;; - - *) - echo -e "\n${YEL}Option ${RED}$1${YEL} not recognized... Refer to help below!${CRS}" - help - exit ;; - esac -done - -## ENVIRONMENT CHECK -dependency_check -arch_check - -## CHECK LOCAL INSTALL -local_check - -## UPDATE -update_application - -## CLEAN -exit_clean diff --git a/helium_helper_REMOTE_9867.sh b/helium_helper_REMOTE_9867.sh deleted file mode 100644 index a0c0218..0000000 --- a/helium_helper_REMOTE_9867.sh +++ /dev/null @@ -1,1102 +0,0 @@ -#!/bin/bash -# Helium BOWSER INSTALL & UPDATE SCRIPT ---> INTERACTIVE -########## PREREQUISITES ########### -set -e - -## SOME COLOR -CYN="\e[0;36m" -YEL="\e[0;33m" -RED="\e[0;31m" -GRN="\e[0;32m" -LCY="\e[1;36m" -WHT="\e[1;37m" -CRS="\e[0m" - -## GLOBAL VARIABLES -APP_NAME="Helium" -APP_NAME_LONG="Helium Web Browser" -FILE_EXTENSION="AppImage" -APP_SOURCE="GitHub" -ARCH_OVERRIDE="" -BACKUP_METHOD="full" -BACKUP_COMPRESSION_OVERRIDE="" -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.2" -ALIAS="helium-helper" -DATE=$(date +"%d%m%y") - -## LOCATIONS -TMP=/tmp/$APP_NAME -INSTALL_PATH=$HOME/.apps/$APP_NAME -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 -LOG=$LOG_PATH/log -LAUNCHER_PATH=$HOME/.local/share/applications -SCRIPT_PATH=$HOME/.local/bin - -## REMOTE LOCATIONS -REMOTE_REPO_BRANCH="main" -REMOTE_REPO_URL=https://git.h0ster.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 ############################ - -#################### DEPENDENCY CHECK #################### -cmd_query() { - if ! command -v $PACKAGE > /dev/null 2>&1 ; then - echo " - $PACKAGE" >> $TMP/missingDeps - fi -} - -dependency_check () { - DEPENDENCIES=("curl" "wget" "tar") - mkdir -p $TMP - - for PACKAGE in "${DEPENDENCIES[@]}" ; do - cmd_query "$PACKAGE" - - 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" - exit_clean - fi -} - -#################### SHELL CHECK #################### -shell_query() { - if [ "$(echo $SHELL | grep "$SHELL_OPTION")" ] ; then - ACTIVE_SHELL=$SHELL_OPTION - fi - -} - -shell_check() { - SHELLS=("bash" "fish" "zsh") - - for SHELL_OPTION in "${SHELLS[@]}" ; do - shell_query "$SHELL_OPTION" - done -} - -#################### ARCH CHECK #################### -arch_check() { - if [ "$ARCH_OVERRIDE" ] ; then - ARCH=$ARCH_OVERRIDE - - else - ARCH=$(uname -m) - if [ "$ARCH" == "aarch64" ] ; then - ARCH="arm64" - - elif [ "$ARCH" == "amd64" ] ; then - ARCH="x86_64" - fi - fi - - if ! [[ "$ARCH" == "arm64" || "$ARCH" == "x86_64" ]] ; then - echo -e "\n ${CYN}$ARCH ${RED}unsupported! Only ${CYN}x86_68 ${RED}or ${CYN}arm64 ${RED}architecture are supported!${CRS}\n" - exit - fi -} - -#################### LOCAL INSTALL CHECK #################### -local_check() { - if ! [ -d "$INSTALL_PATH" ] ; then - echo -e "\n ${YEL}$APP_NAME_LONG directory not found!${CRS}\n" - install_application - exit - - elif ! [ -f "$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION" ] ; then - echo -e "\n ${YEL}$APP_NAME_LONG directory found but no executable named ${CYN}$APP_NAME.$FILE_EXTENSION${YEL}!${CRS}\n" - install_application - exit - 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_application() { - if [ -f "$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION" ] ; then - echo -e " ${YEL}$APP_NAME_LONG AppImage found! Trying to update...${CRS}" - update_application - exit - fi - - while true ; do - read -p " Download and install $APP_NAME_LONG from $APP_SOURCE? (Y/n) : " CONFIRM_INSTALL - - if [[ "$CONFIRM_INSTALL" == "" || "$CONFIRM_INSTALL" == "y" || "$CONFIRM_INSTALL" == "Y" ]] ; then - DOWNLOAD_URL=$(curl -s $APP_SOURCE_URL | grep "browser_download_url" | grep "$ARCH.$FILE_EXTENSION" | grep -v "zsync" | tr -d \" | awk '{print $2}') - APP_SOURCE_FILENAME=$(curl -s $APP_SOURCE_URL | grep "browser_download_url" | grep "$ARCH.$FILE_EXTENSION" | grep -v "zsync" | tr -d \" | awk '{print $2}' | awk -F'/' '{print $9}') - echo -e "\n - Downloading ${CYN}$APP_SOURCE_FILENAME${CRS}..." - wget -P $TMP $DOWNLOAD_URL -q - chmod +x $TMP/$APP_SOURCE_FILENAME - mkdir -p $INSTALL_PATH - mv $TMP/$APP_SOURCE_FILENAME $INSTALL_PATH/$APP_NAME.$FILE_EXTENSION - add_launcher - echo -e "\n ${GRN}$APP_NAME_LONG is installed!${CRS}\n" - break - - elif [[ "$CONFIRM_INSTALL" == "n" || "$CONFIRM_INSTALL" == "N" ]] ; then - echo -e "\n ${RED}Cancelled!${CRS}\n" - break - - else - echo -e "\n ${YEL}Invalid response!${CRS}\n" - fi - done -} - -#################### LAUNCHER #################### -add_launcher() { - if [ -f "$LAUNCHER_PATH/$APP_NAME.desktop" ] ; then - echo -e "\n ${YEL}${APP_NAME}.desktop already exists!${CRS}" - - elif [ -f "$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION" ] ; then - while true ; do - echo - read -p " Add $APP_NAME_LONG launcher to $LAUNCHER_PATH? (Y/n) : " CONFIRM_LAUNCHER - - if [[ "$CONFIRM_LAUNCHER" == "" || "$CONFIRM_LAUNCHER" == "y" || "$CONFIRM_LAUNCHER" == "Y" ]] ; then - LAUNCHER_URL=$REMOTE_REPO_URL/assets/launcher/helium.desktop.template - ICON_URL=$REMOTE_REPO_URL/assets/icon/helium.png - AUTO_SCRIPT_URL=$REMOTE_REPO_URL/$AUTO_SCRIPT_FILE_NAME - LOCAL_VERSION=$($INSTALL_PATH/$APP_NAME.$FILE_EXTENSION --version | awk '{print $2}') - mkdir -p $LAUNCHER_PATH $SCRIPT_PATH $BACKUP_PATH $ASSET_PATH/icon - if ! [ -f "$SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME" ] ; then - echo -e "\n - Downloading ${CYN}$AUTO_SCRIPT_FILE_NAME${CRS}..." - wget -P $TMP $AUTO_SCRIPT_URL -q - chmod +x $TMP/$AUTO_SCRIPT_FILE_NAME - mv $TMP/$AUTO_SCRIPT_FILE_NAME $SCRIPT_PATH - fi - - echo -e "\n - Downloading ${CYN}launcher files${CRS}..." - wget -P $TMP $LAUNCHER_URL -q - wget -P $TMP $ICON_URL -q - sed -i "s|%APP_LOCATION%|$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION|" $TMP/helium.desktop.template - sed -i "s|%ICON_LOCATION%|$ASSET_PATH/icon/helium.png|" $TMP/helium.desktop.template - sed -i "s|%APP_VERSION%|$LOCAL_VERSION|" $TMP/helium.desktop.template - sed -i "s|%QUIET_UPDATE_SCRIPT%|$SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME|" $TMP/helium.desktop.template - sed -i "s|%SCRIPT_UPDATE%|$SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME -S|" $TMP/helium.desktop.template - sed -i "s|%OPEN_LOG_EDITOR%|$SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME -L|" $TMP/helium.desktop.template - mv $TMP/helium.desktop.template $LAUNCHER_PATH/$APP_NAME.desktop - mv $TMP/helium.png $ASSET_PATH/icon - echo -e "\n ${GRN}$APP_NAME_LONG launcher is set up!${CRS}" - break - - elif [[ "$CONFIRM_LAUNCHER" == "n" || "$CONFIRM_LAUNCHER" == "N" ]] ; then - echo -e " ${RED}Launcher not added!${CRS}" - break - - else - echo -e " ${YEL}Invalid response!${CRS}\n" - fi - done - - else - echo -e "\n ${RED}$APP_NAME_LONG AppImage not found! Can't add launcher...${CRS}" - install_application - exit - fi -} - -#################### ALIAS #################### -add_alias() { - if ! [ -f "$SCRIPT_PATH/$SCRIPT_FILE_NAME" ] ; then - mkdir -p $SCRIPT_PATH - wget -P $TMP $REMOTE_SCRIPT_URL -q - chmod +x $TMP/$SCRIPT_FILE_NAME - mv $TMP/$SCRIPT_FILE_NAME $SCRIPT_PATH - fi - - if [ "$ACTIVE_SHELL" == "zsh" ] ; then - if [ "$(cat $HOME/.zshrc | grep "$ALIAS")" ] ; then - echo -e "\n ${LCY}$ALIAS${CRS} already present in ${CYN}$HOME/.zshrc${CRS}\n" - - else - echo "### $APP_NAME_LONG Alias zsh ###" >> $HOME/.zshrc - echo "alias $ALIAS=\"$SCRIPT_PATH/$SCRIPT_FILE_NAME\"" >> $HOME/.zshrc - echo >> $HOME/.zshrc - echo -e "\n ${LCY}$ALIAS${CRS} added to ${CYN}$HOME/.zshrc${CRS}\n" - fi - - elif [ "$ACTIVE_SHELL" == "bash" ] ; then - if [ "$(cat $HOME/.bashrc | grep "$ALIAS")" ] ; then - echo -e "\n ${LCY}$ALIAS${CRS} already present in ${CYN}$HOME/.bashrc${CRS}\n" - - else - echo "### $APP_NAME_LONG Alias bash ###" >> $HOME/.bashrc - echo "alias $ALIAS=\"$SCRIPT_PATH/$SCRIPT_FILE_NAME\"" >> $HOME/.bashrc - echo >> $HOME/.bashrc - echo -e "\n ${LCY}$ALIAS${CRS} added to ${CYN}$HOME/.bashrc${CRS}\n" - fi - - elif [ "$ACTIVE_SHELL" == "fish" ] ; then - if [ "$(cat $HOME/.config/fish/config.fish | grep "source $HOME/.config/fish/$ALIAS.fish")" ] ; then - echo -e "\n ${LCY}$ALIAS${CRS} already present in ${CYN}$HOME/.config/fish/config.fish${CRS}\n" - - else - echo "### $APP_NAME_LONG Alias FISH ###" > $HOME/.config/fish/$ALIAS.fish - echo >> $HOME/.config/fish/$ALIAS.fish - echo "function $ALIAS" >> $HOME/.config/fish/$ALIAS.fish - echo " $SCRIPT_PATH/$SCRIPT_FILE_NAME \$argv" >> $HOME/.config/fish/$ALIAS.fish - echo "end" >> $HOME/.config/fish/$ALIAS.fish - echo >> $HOME/.config/fish/$ALIAS.fish - echo "source $HOME/.config/fish/$ALIAS.fish" >> $HOME/.config/fish/config.fish - echo -e "\n ${LCY}$ALIAS ${CRS}added to ${CYN}$HOME/.config/fish/config.fish${CRS}\n" - fi - - else - echo -e "\n ${LCY}$ACTIVE_SHELL${RED}shell is not yet supported!${CRS}\n" - echo -e " ${CRS}Working implementation are available for bash, zsh & fish!${CRS}\n" - fi -} - -#################### 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" - exit - - elif [ -z "$LOCAL_VERSION" ] ; then - echo -e "\n ${RED}Empty version tag from ${CYN}local AppImage${RED}! Can't compare, exiting...${CRS}\n" - 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 - echo -e "\n ${LCY}$APP_NAME_LONG is updatable!${CRS}\n" - app_version_info - - while true ; do - read -p " Download and update $APP_NAME_LONG from $APP_SOURCE? (Y/n) : " CONFIRM - - if [[ "$CONFIRM" == "" || "$CONFIRM" == "y" || "$CONFIRM" == "Y" ]] ; then - DOWNLOAD_URL=$(curl -s $APP_SOURCE_URL | grep "browser_download_url" | grep "$ARCH.$FILE_EXTENSION" | grep -v "zsync" | tr -d \" | awk '{print $2}') - APP_SOURCE_FILENAME=$(curl -s $APP_SOURCE_URL | grep "browser_download_url" | grep "$ARCH.$FILE_EXTENSION" | grep -v "zsync" | tr -d \" | awk '{print $2}' | awk -F'/' '{print $9}') - mkdir -p $TMP - echo -e "\n - Downloading ${CYN}$APP_SOURCE_FILENAME${CRS}..." - wget -P $TMP $DOWNLOAD_URL -q - ${BACKUP_METHOD}_backup - chmod +x $TMP/$APP_SOURCE_FILENAME - mv $TMP/$APP_SOURCE_FILENAME $INSTALL_PATH/$APP_NAME.$FILE_EXTENSION - sed -i "s|X-AppImage-Version=.*|X-AppImage-Version=$($INSTALL_PATH/$APP_NAME.$FILE_EXTENSION --version | awk '{print $2}')|" $LAUNCHER_PATH/$APP_NAME.desktop - echo -e " ${GRN}$APP_NAME_LONG is up-to-date!${CRS}\n" - break - - elif [[ "$CONFIRM" == "n" || "$CONFIRM" == "N" ]] ; then - echo -e "\n ${RED}Cancelled!${CRS}\n" - exit - - else - echo -e "\n ${YEL}Invalid response!${CRS}\n" - fi - done - - else - echo -e "\n ${RED}Version tags malformed or you are using a Beta version!${CRS}\n" - app_version_info - echo -e " ${RED}Update failed... Exiting...${CRS}\n" - exit - fi -} - -#################### BACKUP #################### -call_backup() { - 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 - read -p " Overwrite backup? (y/N) : " OVERWRITE_BACKUP - - if [[ "$OVERWRITE_BACKUP" == "" || "$OVERWRITE_BACKUP" == "n" || "$OVERWRITE_BACKUP" == "N" ]] ; then - echo -e "\n ${YEL}Skipping backup process...${CRS}\n" - break - - elif [[ "$OVERWRITE_BACKUP" == "y" || "$OVERWRITE_BACKUP" == "Y" ]] ; then - echo -e "\n ${YEL}Overwriting backup...${CRS}" - 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 - 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 - - if [ -d "$BACKUP_ITEM" ] ; then - mkdir -p $TMP/backup - cp -r $BACKUP_ITEM $TMP/backup - - elif [ -f "$BACKUP_ITEM" ] ; then - mkdir -p $TMP/backup - cp $BACKUP_ITEM $TMP/backup - fi - done - - backup_logger -} - -script_backup() { - if [ -d "$SCRIPT_PATH" ] ; then - BACKUPABLE=("$SCRIPT_PATH/$SCRIPT_FILE_NAME" "$SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME") - echo -e "\n - ${CRS}Collecting files for ${CYN}$BACKUP_METHOD${CRS} backup...${CRS}" - backup_file_collector - pack_backup - - else - echo -e " ${YEL}Nothing to back up...${CRS}" - fi -} - -app_backup() { - if [ -f "$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION" ] ; then - BACKUPABLE=("$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION") - echo -e "\n - ${CRS}Collecting files for ${CYN}$BACKUP_METHOD${CRS} backup...${CRS}" - backup_file_collector - pack_backup - - else - echo -e " ${YEL}Nothing to back up...${CRS}" - fi -} - -config_backup() { - if [[ -d "$LAUNCHER_PATH" || -d $APP_CONFIG_PATH ]] ; then - BACKUPABLE=("$LAUNCHER_PATH/$APP_NAME.desktop" "$APP_CONFIG_PATH") - echo -e "\n - ${CRS}Collecting files for ${CYN}$BACKUP_METHOD${CRS} backup...${CRS}" - backup_file_collector - pack_backup - - else - echo -e " ${YEL}Nothing to back up...${CRS}" - fi -} - -full_backup() { - if [[ -d "$INSTALL_PATH" || -d "$SCRIPT_PATH" || -d $APP_CONFIG_PATH ]] ; then - BACKUPABLE=("$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") - echo -e "\n - ${CRS}Collecting files for ${CYN}$BACKUP_METHOD${CRS} backup...${CRS}" - backup_file_collector - pack_backup - - else - echo -e " ${YEL}Nothing to back up...${CRS}" - fi -} - -pack_backup() { - if [ -d "$TMP/backup" ] ; then - CWD=$(pwd) - cd $TMP/backup - - if [[ -f "*.sh" ]] ; then - chmod -x *.sh - - elif [[ -f "*.$FILE_EXTENSION" ]] ; then - chmod -x *.$FILE_EXTENSION - fi - - if [ "$BACKUP_COMPRESSION_OVERRIDE" ] ; then - BACKUP_COMPRESSION=$BACKUP_COMPRESSION_OVERRIDE - - else - COMPRESSION_METHOD=("pbzip2" "gzip" "bzip2" "zip") - - until [ "$BACKUP_COMPRESSION" ] ; do - for COMPRESSION_TYPE in "${COMPRESSION_METHOD[@]}" ; do - - if command -v $COMPRESSION_TYPE > /dev/null 2>&1 ; then - BACKUP_COMPRESSION=$COMPRESSION_TYPE - break - fi - done - done - fi - - echo -e "\n - ${CRS}Packing backup archive with ${CYN}$BACKUP_COMPRESSION${CRS}...${CRS}\n" - - if [ "$BACKUP_COMPRESSION" == "pbzip2" ] ; then - tar -cf $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar * > /dev/null 2>&1 - pbzip2 $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar - mkdir -p $BACKUP_PATH - mv $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar.bz2 $BACKUP_PATH - cd $TMP && rm -rf backup - - elif [ "$BACKUP_COMPRESSION" == "gzip" ] ; then - tar -cf $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar * > /dev/null 2>&1 - gzip $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar - mkdir -p $BACKUP_PATH - mv $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar.gz $BACKUP_PATH - cd $TMP && rm -rf backup - - elif [ "$BACKUP_COMPRESSION" == "bzip2" ] ; then - tar -cf $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar * > /dev/null 2>&1 - bzip2 $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar - mkdir -p $BACKUP_PATH - mv $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar.bz2 $BACKUP_PATH - cd $TMP && rm -rf backup - - elif [ "$BACKUP_COMPRESSION" == "zip" ] ; then - tar -cf $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar * > /dev/null 2>&1 - zip -r $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar.zip $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar > /dev/null 2>&1 - mkdir -p $BACKUP_PATH - mv $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar.zip $BACKUP_PATH - cd $TMP && rm -rf backup - - else - echo -e " ${YEL}No supported compression method detected! Copying backup uncompressed...${CRS}\n" - mkdir -p $BACKUP_PATH - mv $TMP/backup $BACKUP_PATH/$APP_NAME.$BACKUP_METHOD.backup_$DATE - cd $TMP && rm -rf backup - fi - - echo -e " - ${CRS}Backup stored in ${CYN}$BACKUP_PATH${CRS}...${CRS}\n" - cd $CWD - 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 - 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 - - while true ; do - read -p " Remove $APP_NAME_LONG incl. backups, configuration and launcher? (Y/n) : " CONFIRM_REMOVE - - if [[ "$CONFIRM_REMOVE" == "" || "$CONFIRM_REMOVE" == "y" || "$CONFIRM_REMOVE" == "Y" ]] ; then - REMOVABLE=("$INSTALL_PATH" "$LAUNCHER_PATH/$APP_NAME.desktop" "$APP_CONFIG_PATH" "$SCRIPT_PATH/$SCRIPT_FILE_NAME" "$SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME") - echo -e "\n - ${CRS}Removing ${CYN}$APP_NAME_LONG${CRS} files, directories and configuration...${CRS}" - - for RM_PATH in "${REMOVABLE[@]}" ; do - if [[ -f "$RM_PATH" || -d "$RM_PATH" ]] ; then - rm -rf "$RM_PATH" - fi - done - - shell_check - - if [ "$ACTIVE_SHELL" == "zsh" ] ; then - if [ "$(cat $HOME/.zshrc | grep "$ALIAS")" ] ; then - sed -i "/$APP_NAME_LONG/d" $HOME/.zshrc - sed -i "/$ALIAS/d" $HOME/.zshrc - echo -e "\n - Alias removed from ${CYN}$ACTIVE_SHELL${CRS}" - fi - - elif [ "$ACTIVE_SHELL" == "bash" ] ; then - if [ "$(cat $HOME/.bashrc | grep "$ALIAS")" ] ; then - sed -i "/$APP_NAME_LONG/d" $HOME/.bashrc - sed -i "/$ALIAS/d" $HOME/.bashrc - echo -e "\n - Alias removed from ${CYN}$ACTIVE_SHELL${CRS}" - fi - - elif [ "$ACTIVE_SHELL" == "fish" ] ; then - if [ "$(cat $HOME/.config/fish/config.fish | grep "source $HOME/.config/fish/$ALIAS.fish")" ] ; then - sed -i "/$ALIAS/d" $HOME/.config/fish/config.fish - rm $HOME/.config/fish/$ALIAS.fish - echo -e "\n - Alias removed from ${CYN}$ACTIVE_SHELL${CRS}" - fi - fi - - echo -e "\n ${YEL}$APP_NAME_LONG removed!${CRS}\n" - break - - elif [[ "$CONFIRM_REMOVE" == "n" || "$CONFIRM_REMOVE" == "N" ]] ; then - echo -e "\n ${RED}Cancelled!${CRS}" - exit - - else - echo -e "\n ${YEL}Invalid response!${CRS}\n" - fi - done - - else - echo -e " ${RED}Can't remove $APP_NAME_LONG! ${CYN}$INSTALL_PATH ${RED}directory not found...${CRS}\n" - exit - fi -} - -#################### SCRIPT VERSION #################### -script_version() { - echo -e "\n ${CYN}$APP_NAME_LONG Helper Script Version : ${CRS}$SCRIPT_VERSION\n" -} - -#################### UPDATE SCRIPT #################### -scrip_version_info() { - echo -e " - ${CYN}Local Version :\t${CRS}$SCRIPT_VERSION" - echo -e " - ${CYN}Remote Version :\t${CRS}$REMOTE_SCRIPT_VERSION" - echo -e " - ${CYN}Update Branch :\t${CRS}$REMOTE_REPO_BRANCH\n" -} - -update_script() { - if ! [ -f "$SCRIPT_PATH/$SCRIPT_FILE_NAME" ] ; then - echo -e "\n ${YEL}$SCRIPT_FILE_NAME not found...${CRS}" - - while true ; do - echo - 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 - 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" - break - - elif [[ "$CONFIRM_SCRIPT_INSTALL" == "n" || "$CONFIRM_SCRIPT_INSTALL" == "N" ]] ; then - echo -e " ${RED}Cancelled!${CRS}\n" - exit - - else - echo -e " ${YEL}Invalid response!${CRS}\n" - fi - done - fi - - REMOTE_SCRIPT_VERSION=$(curl -s $REMOTE_SCRIPT_URL | grep -m 1 "SCRIPT_VERSION" | tr -d 'SCRIPT_VERSION="') - - ### 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" - 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" - exit - fi - - ### COMPARE LOCAL & REMOTE VERSION - SCRIPT_VERSION_NUM=$(echo $SCRIPT_VERSION | tr -d .) - REMOTE_SCRIPT_VERSION_NUM=$(echo $REMOTE_SCRIPT_VERSION | tr -d .) - - if [ "$REMOTE_SCRIPT_VERSION" == "$SCRIPT_VERSION" ] ; then - echo -e "\n ${GRN}$SCRIPT_FILE_NAME is already up-to-date!${CRS}\n" - - elif [ "$REMOTE_SCRIPT_VERSION_NUM" -gt "$SCRIPT_VERSION_NUM" ] ; then - echo -e "\n ${LCY}$SCRIPT_FILE_NAME is updatable!${CRS}\n" - scrip_version_info - - while true ; do - read -p " Update $SCRIPT_FILE_NAME? (Y/n) : " CONFIRM_SCRIPT_UPDATE - - if [[ "$CONFIRM_SCRIPT_UPDATE" == "" || "$CONFIRM_SCRIPT_UPDATE" == "y" || "$CONFIRM_SCRIPT_UPDATE" == "Y" ]] ; then - if ! [ -d "$BACKUP_PATH" ] ; then - mkdir -p $BACKUP_PATH - fi - mv $SCRIPT_PATH/$SCRIPT_FILE_NAME $BACKUP_PATH/$SCRIPT_FILE_NAME.old - mv $SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME $BACKUP_PATH/$AUTO_SCRIPT_FILE_NAME.old - 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 " ${GRN}$SCRIPT_FILE_NAME is up-to-date!${CRS}" - break - - elif [[ "$CONFIRM_SCRIPT_UPDATE" == "n" || "$CONFIRM_SCRIPT_UPDATE" == "N" ]] ; then - echo -e "\n ${RED}Cancelled!${CRS}\n" - break - - else - echo -e "\n ${YEL}Invalid response!${CRS}\n" - fi - done - - else - echo -e "\n ${RED}Version tags malformed or you are using a Beta version!${CRS}\n" - scrip_version_info - echo -e " ${RED}Updating script failed...${CRS}\n" - fi -} - -#################### 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" -} - -compare_version() { - 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}') - - if [ -z "$APP_SOURCE_VERSION" ] ; then - 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}\n" - exit - fi - - LOCAL_VERSION_NUM=$(echo $LOCAL_VERSION | tr -d .) - APP_SOURCE_VERSION_NUM=$(echo $APP_SOURCE_VERSION | tr -d .) - - if [ "$APP_SOURCE_VERSION" == "$LOCAL_VERSION" ] ; then - echo -e "\n ${GRN}$APP_NAME_LONG is up-to-date!${CRS}\n" - app_version_info - - elif [ "$APP_SOURCE_VERSION_NUM" -gt "$LOCAL_VERSION_NUM" ] ; then - echo -e "\n ${LCY}$APP_NAME_LONG is updatable!${CRS}\n" - app_version_info - - else - echo -e "\n ${RED}Version tags malformed or you are using a Beta version!${CRS}\n" - app_version_info - fi -} - -#################### 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 "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" - echo -e "\t-S\tUpdate $SCRIPT_FILE_NAME" - echo -e "\t-h\tPrint this help page\n" - echo -e "Configured directories:\n" - echo -e "\t${CYN}${INSTALL_PATH}${CRS}\t\tInstall location" - echo -e "\t${CYN}${LAUNCHER_PATH}${CRS}\tLauncher location" - echo -e "\t${CYN}${SCRIPT_PATH}${CRS}\t\t\tScript location\n" -} - -#################### EXIT CLEAN #################### -exit_clean() { - if [ -d "$TMP" ] ; then - rm -rf $TMP - fi - - exit -} - -########################### MAIN ########################### - -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}" - help - exit - fi - - case $OPTION in - i) - TARGET="INSTALL" - echo -e "\n ${YEL}Installing $APP_NAME_LONG...${CRS}\n" - if [ "$#" -gt "1" ] ; then - ALL_PARAMETER=$@ - - for PARAMETER in ${ALL_PARAMETER[@]} ; do - if [ -d "$PARAMETER" ] ; then - INSTALL_PATH=$PARAMETER - fi - done - fi - dependency_check - arch_check - path_correction - install_application - exit_clean ;; - - l) - echo -e "\n ${YEL}Adding $APP_NAME_LONG launcher...${CRS}" - dependency_check - local_check - add_launcher - exit_clean ;; - - a) - echo -e "\n ${YEL}Adding alias...${CRS}" - if [ "$#" -gt "1" ] ; then - ALL_PARAMETER=$@ - - for PARAMETER in ${ALL_PARAMETER[@]} ; do - if [ "$PARAMETER" ] ; then - ALIAS=$PARAMETER - fi - done - fi - shell_check - add_alias - exit ;; - - u) - echo -e "\n ${YEL}Updating $APP_NAME_LONG...${CRS}" - dependency_check - arch_check - local_check - update_application - exit_clean ;; - - b) - TARGET="BACKUP" - echo -e "\n ${YEL}Backing up $APP_NAME_LONG...${CRS}" - if [ "$#" -gt "1" ] ; then - ALL_PARAMETER=$@ - - for PARAMETER in ${ALL_PARAMETER[@]} ; do - if [[ "$PARAMETER" == "script" || "$PARAMETER" == "config" || "$PARAMETER" == "app" || "$PARAMETER" == "full" ]] ; then - BACKUP_METHOD=$PARAMETER - - elif [[ "$PARAMETER" == "pbzip2" || "$PARAMETER" == "gzip" || "$PARAMETER" == "bzip2" || "$PARAMETER" == "zip" ]] ; then - BACKUP_COMPRESSION_OVERRIDE=$PARAMETER - - elif [[ -d "$PARAMETER" || -d "$(pwd)/$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 ;; - - r) - echo -e "\n ${YEL}Removing $APP_NAME_LONG...${CRS}\n" - remove_application - exit ;; - - c) - echo -e "\n ${YEL}Comparing remote to local version...${CRS}" - dependency_check - local_check - compare_version - exit_clean ;; - - s) - script_version - exit ;; - - S) - echo -e "\n ${YEL}Updating script...${CRS}" - dependency_check - update_script - exit_clean ;; - - h) - help - exit ;; - - *) - echo -e "\n${YEL}Option ${RED}$1${YEL} not recognized... Refer to help below!${CRS}" - help - exit ;; - esac -done - -## ENVIRONMENT CHECK -dependency_check -arch_check - -## CHECK LOCAL INSTALL -local_check - -## UPDATE -update_application - -## CLEAN -exit_clean