diff --git a/helium_helper.sh b/helium_helper.sh index 53e739f..86f99d2 100755 --- a/helium_helper.sh +++ b/helium_helper.sh @@ -18,11 +18,12 @@ 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.8" +SCRIPT_VERSION="0.5.9" ALIAS="update-helium" DATE=$(date +"%d%m%y") @@ -47,10 +48,8 @@ APP_SOURCE_URL=https://api.github.com/repos/imputnet/helium-linux/releases/lates ### DEPENDENCIES cmd_query() { - #local PACKAGE=$1 - - if ! command -v $PACKAGE > /dev/null 2>&1 ; then - echo " - $PACKAGE" >> $TMP/missingDeps + if ! command -v $PACKAGE > /dev/null 2>&1 ; then + echo " - $PACKAGE" >> $TMP/missingDeps fi } @@ -65,15 +64,13 @@ dependency_check () { if [ -f "$TMP/missingDeps" ] ; then MISSING=$(cat $TMP/missingDeps) - echo -e "\n ${RED}Following dependencies are missing :\n\n${CRS}$MISSING\n\n ${CYN}Please install and re-run script !${CRS}" + 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() { - #local SHELL_OPTION=$1 - if [ "$(echo $SHELL | grep "$SHELL_OPTION")" ] ; then ACTIVE_SHELL=$SHELL_OPTION fi @@ -89,7 +86,6 @@ shell_check() { } ### ARCH CHECK - arch_check() { if [ "$ARCH_OVERRIDE" ] ; then ARCH=$ARCH_OVERRIDE @@ -109,21 +105,21 @@ arch_check() { local_check() { if ! [ -d "$INSTALL_PATH" ] ; then echo -e "\n ${YEL}$APP_NAME_LONG directory not found!${CRS}\n" - install_helium + 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_helium + install_application exit fi } ### INSTALL -install_helium() { +install_application() { if [ -f "$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION" ] ; then - echo -e "\n ${YEL}$APP_NAME_LONG AppImage found! Trying to update...${CRS}" - update_helium + echo -e " ${YEL}$APP_NAME_LONG AppImage found! Trying to update...${CRS}" + update_application exit fi @@ -149,7 +145,6 @@ install_helium() { else echo -e "\n ${YEL}Invalid response!${CRS}\n" fi - done } @@ -197,12 +192,11 @@ add_launcher() { 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_helium + install_application exit fi } @@ -260,7 +254,7 @@ add_alias() { } ### UPDATE -update_helium() { +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}') @@ -283,8 +277,7 @@ update_helium() { elif [ "$APP_SOURCE_VERSION_NUM" -gt "$LOCAL_VERSION_NUM" ] ; then echo -e "\n ${LCY}$APP_NAME_LONG is updatable!${CRS}\n" - echo -e " ${CYN}Local Version :\t${CRS}${LOCAL_VERSION}" - echo -e " ${CYN}$APP_SOURCE Version :\t${CRS}${APP_SOURCE_VERSION}\n" + app_version_info while true ; do read -p " Download and update $APP_NAME_LONG from $APP_SOURCE? (Y/n) : " CONFIRM @@ -295,7 +288,7 @@ update_helium() { mkdir -p $TMP echo -e "\n - Downloading ${CYN}$APP_SOURCE_FILENAME${CRS}..." wget -P $TMP $DOWNLOAD_URL -q - backup_helium + full_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 @@ -313,109 +306,182 @@ update_helium() { else echo -e "\n ${RED}Version tags malformed or you are using a Beta version!${CRS}\n" - echo -e " ${CYN}Local Version :\t${CRS}${LOCAL_VERSION}" - echo -e " ${CYN}$APP_SOURCE Version :\t${CRS}${APP_SOURCE_VERSION}\n" + app_version_info echo -e " ${RED}Update failed... Exiting...${CRS}\n" exit fi - } ### BACKUP -backup_helium() { - 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${CRS}...${CRS}" +call_backup() { + if [ -f $BACKUP_PATH\/$APP_NAME\.$BACKUP_METHOD\.backup_* ] ; then + echo -e "\n ${CYN}A $BACKUP_METHOD backup already exists!${CRS}\n" - for BACKUP_ITEM in ${BACKUPABLE[@]} ; do - if [ -d "$BACKUP_ITEM" ] ; then - mkdir -p $TMP/backup - cp -r $BACKUP_ITEM $TMP/backup + while true ; do + read -p " Overwrite backup? (y/N) : " OVERWRITE_BACKUP - elif [ -f "$BACKUP_ITEM" ] ; then - mkdir -p $TMP/backup - cp $BACKUP_ITEM $TMP/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 - if [ -d "$TMP/backup" ] ; then - CWD=$(pwd) - cd $TMP/backup - chmod -x *.sh *.$FILE_EXTENSION > /dev/null 2>&1 + else + ${BACKUP_METHOD}_backup + fi +} - if [ "$BACKUP_COMPRESSION_OVERRIDE" ] ; then - BACKUP_COMPRESSION=$BACKUP_COMPRESSION_OVERRIDE +backup_file_collector() { + for BACKUP_ITEM in ${BACKUPABLE[@]} ; do - elif ! [ "$BACKUP_COMPRESSION_OVERRIDE" ] ; then - COMPRESSION_METHOD=("pbzip2" "gzip" "bzip2" "zip") + if [ -d "$BACKUP_ITEM" ] ; then + mkdir -p $TMP/backup + cp -r $BACKUP_ITEM $TMP/backup - 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}Compressing backup archive with ${CYN}$BACKUP_COMPRESSION${CRS}...${CRS}\n" - - if [ "$BACKUP_COMPRESSION" == "pbzip2" ] ; then - tar -cf $APP_NAME.backup_$DATE.tar * > /dev/null 2>&1 - pbzip2 $APP_NAME.backup_$DATE.tar - mkdir -p $BACKUP_PATH - mv $APP_NAME.backup_$DATE.tar.bz2 $BACKUP_PATH - cd $TMP && rm -rf backup - - elif [ "$BACKUP_COMPRESSION" == "gzip" ] ; then - tar -cf $APP_NAME.backup_$DATE.tar * > /dev/null 2>&1 - gzip $APP_NAME.backup_$DATE.tar - mkdir -p $BACKUP_PATH - mv $APP_NAME.backup_$DATE.tar.gz $BACKUP_PATH - cd $TMP && rm -rf backup - - elif [ "$BACKUP_COMPRESSION" == "bzip2" ] ; then - tar -cf $APP_NAME.backup_$DATE.tar * > /dev/null 2>&1 - bzip2 $APP_NAME.backup_$DATE.tar - mkdir -p $BACKUP_PATH - mv $APP_NAME.backup_$DATE.tar.bz2 $BACKUP_PATH - cd $TMP && rm -rf backup - - elif [ "$BACKUP_COMPRESSION" == "zip" ] ; then - tar -cf $APP_NAME.backup_$DATE.tar * > /dev/null 2>&1 - zip -r $APP_NAME.backup_$DATE.tar.zip $APP_NAME.backup_$DATE.tar > /dev/null 2>&1 - mkdir -p $BACKUP_PATH - mv $APP_NAME.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_$DATE - cd $TMP && rm -rf backup - fi - - echo -e " - ${CRS}Backup stored in ${CYN}$BACKUP_PATH${CRS}...${CRS}\n" - cd $CWD + 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}Compressing 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 + zip -r $APP_NAME.$BACKUP_METHOD.backup_$DATE.zip $APP_NAME.$BACKUP_METHOD.backup_$DATE > /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_helium() { +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" "$SCRIPT_PATH/$SCRIPT_FILE_NAME" "$SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME" "$APP_CONFIG_PATH") - echo -e "\n - ${CRS}Removing ${CYN}$APP_NAME${CRS} directory and configuration...${CRS}" + 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 @@ -471,8 +537,13 @@ script_version() { } ### 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() { - ### CHECK FOR LOCAL SCRIPT if ! [ -f "$SCRIPT_PATH/$SCRIPT_FILE_NAME" ] ; then echo -e "\n ${YEL}$SCRIPT_FILE_NAME not found...${CRS}" @@ -520,9 +591,8 @@ update_script() { 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 ${YEL}$SCRIPT_FILE_NAME is updatable!${CRS}\n" - echo -e " ${CYN}Local Version :\t${CRS}${SCRIPT_VERSION}" - echo -e " ${CYN}Remote Version :\t${CRS}${REMOTE_SCRIPT_VERSION}\n" + 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 @@ -542,7 +612,7 @@ update_script() { break elif [[ "$CONFIRM_SCRIPT_UPDATE" == "n" || "$CONFIRM_SCRIPT_UPDATE" == "N" ]] ; then - echo -e " ${RED}Cancelled!${CRS}" + echo -e " ${RED}Cancelled!${CRS}\n" break else @@ -552,18 +622,21 @@ update_script() { else echo -e "\n ${RED}Version tags malformed or you are using a Beta version!${CRS}\n" - echo -e " ${CYN}Local Version :\t${CRS}${SCRIPT_VERSION}" - echo -e " ${CYN}Remote Version :\t${CRS}${REMOTE_SCRIPT_VERSION}\n" + scrip_version_info echo -e " ${RED}Updating script failed...${CRS}\n" fi } -### COMPARE APPIMAGE VERSIONarch_check +### 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}') - ### 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 @@ -573,26 +646,20 @@ compare_version() { 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 up-to-date!${CRS}\n" - echo -e " ${CYN}Local Version :\t${CRS}${LOCAL_VERSION}" - echo -e " ${CYN}$APP_SOURCE Version :\t${CRS}${APP_SOURCE_VERSION}\n" + app_version_info elif [ "$APP_SOURCE_VERSION_NUM" -gt "$LOCAL_VERSION_NUM" ] ; then - echo -e "\n ${YEL}$APP_NAME_LONG is updatable!${CRS}\n" - echo -e " ${CYN}Local Version :\t${CRS}${LOCAL_VERSION}" - echo -e " ${CYN}$APP_SOURCE Version :\t${CRS}${APP_SOURCE_VERSION}\n" + 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" - echo -e " ${CYN}Local Version :\t${CRS}${LOCAL_VERSION}" - echo -e " ${CYN}$APP_SOURCE Version :\t${CRS}${APP_SOURCE_VERSION}\n" - echo -e " ${RED}Update failed... Exiting...${CRS}\n" - exit + app_version_info fi } @@ -600,19 +667,19 @@ compare_version() { 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 | -r | -c | -s | -S | -h ]\n" # | -U | + 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\tDownload & install $APP_NAME_LONG from $APP_SOURCE" + 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\tDownload & update $APP_NAME_LONG from $APP_SOURCE" + 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 locations:\n" + 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" @@ -631,12 +698,28 @@ exit_clean() { ## 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_helium + install_application exit_clean ;; l) @@ -648,8 +731,14 @@ while getopts ":i,:l,:a,:u,:b,:r,:c,:s,:S,:h" OPTION ; do a) echo -e "\n ${YEL}Adding alias...${CRS}" - if [ "$2" ] ; then - ALIAS=$2 + if [ "$#" -gt "1" ] ; then + ALL_PARAMETER=$@ + + for PARAMETER in ${ALL_PARAMETER[@]} ; do + if [ "$PARAMETER" ] ; then + ALIAS=$PARAMETER + fi + done fi shell_check add_alias @@ -660,20 +749,32 @@ while getopts ":i,:l,:a,:u,:b,:r,:c,:s,:S,:h" OPTION ; do dependency_check arch_check local_check - update_helium + update_application exit_clean ;; b) - echo -e "\n ${YEL}Backing up $APP_NAME_LONG incl. configuration and script...${CRS}" - if [ "$2" ] ; then - BACKUP_PATH=$2 - fi - backup_helium + 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_helium + remove_application exit ;; c) @@ -704,15 +805,15 @@ while getopts ":i,:l,:a,:u,:b,:r,:c,:s,:S,:h" OPTION ; do esac done -## DEPENDENCY CHECK +## ENVIRONMENT CHECK dependency_check arch_check -## CHECK FOR LOCAL INSTALL +## CHECK LOCAL INSTALL local_check ## UPDATE -update_helium +update_application ## CLEAN exit_clean diff --git a/helium_launcher_update.sh b/helium_launcher_update.sh index 9e1e8b2..78b82b8 100755 --- a/helium_launcher_update.sh +++ b/helium_launcher_update.sh @@ -66,7 +66,7 @@ dependency_check () { if [ -f "$TMP/missingDeps" ] ; then MISSING=$(cat $TMP/missingDeps) echo "$DATE | Failed to update - missing dependencies : $MISSING" >> $LOG - notify-send --icon="$ICON" --app-name="$NOTIFY_NAME" "Update failed! See log for details" + notify-send --icon="$ICON" "$NOTIFY_NAME" "Update failed! See log for details" exit_clean fi @@ -74,12 +74,12 @@ dependency_check () { if ! [ -d "$INSTALL_PATH" ] ; then mkdir -p $INSTALL_PATH echo "$DATE | Failed to update - $APP_NAME installation path not present - But created for logging" >> $LOG - notify-send --icon="$ICON" --app-name="$NOTIFY_NAME" "Update failed! See log for details" + notify-send --icon="$ICON" "$NOTIFY_NAME" "Update failed! See log for details" exit elif ! [ -f "$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION" ] ; then echo "$DATE | Failed to update - Local $APP_NAME AppImage not found" >> $LOG - notify-send --icon="$ICON" --app-name="$NOTIFY_NAME" "Update failed! See log for details" + notify-send --icon="$ICON" "$NOTIFY_NAME" "Update failed! See log for details" exit fi @@ -160,7 +160,7 @@ backup_helium() { fi echo "$DATE | Backup - Backup (compressed $BACKUP_COMPRESSION archive) written to $BACKUP_PATH" >> $LOG - notify-send --icon="$ICON" --app-name="$NOTIFY_NAME" "Backup created" + notify-send --icon="$ICON" "$NOTIFY_NAME" "Backup created" cd $CWD fi @@ -174,7 +174,7 @@ update_script() { ### CHECK FOR LOCAL SCRIPT if ! [ -f "$SCRIPT_PATH/$SCRIPT_FILE_NAME" ] ; then echo "$DATE | Failed to update script - local file not found" >> $LOG - notify-send --icon="$ICON" --app-name="$NOTIFY_NAME" "Script update failed! See log for details" + notify-send --icon="$ICON" "$NOTIFY_NAME" "Script update failed! See log for details" exit fi @@ -184,12 +184,12 @@ update_script() { ### CHECK FOR EMPTY VERSION TAGS if [ -z "$SCRIPT_VERSION" ] ; then echo "$DATE | Failed to update script - Empty version tag --> local" >> $LOG - notify-send --icon="$ICON" --app-name="$NOTIFY_NAME" "Script update failed! See log for details" + notify-send --icon="$ICON" "$NOTIFY_NAME" "Script update failed! See log for details" exit elif [ -z "$REMOTE_SCRIPT_VERSION" ] ; then echo "$DATE | Failed to update script - Empty version tag --> $APP_SOURCE" >> $LOG - notify-send --icon="$ICON" --app-name="$NOTIFY_NAME" "Script update failed! See log for details" + notify-send --icon="$ICON" "$NOTIFY_NAME" "Script update failed! See log for details" exit fi @@ -199,7 +199,7 @@ update_script() { REMOTE_SCRIPT_VERSION_NUM=$(echo $REMOTE_SCRIPT_VERSION | tr -d .) if [ "$REMOTE_SCRIPT_VERSION" == "$SCRIPT_VERSION" ] ; then - notify-send --icon="$ICON" --app-name="$NOTIFY_NAME" "Script is up-to-date" + notify-send --icon="$ICON" "$NOTIFY_NAME" "Script is up-to-date" elif [ "$REMOTE_SCRIPT_VERSION_NUM" -gt "$SCRIPT_VERSION_NUM" ] ; then mv $SCRIPT_PATH/$SCRIPT_FILE_NAME $BACKUP_PATH/$SCRIPT_FILE_NAME.old @@ -209,13 +209,13 @@ update_script() { chmod +x $TMP/$SCRIPT_FILE_NAME $TMP/$PARENT_SCRIPT_FILE_NAME mv $TMP/$SCRIPT_FILE_NAME $TMP/$PARENT_SCRIPT_FILE_NAME $SCRIPT_PATH echo "$DATE | Script updated to version $REMOTE_SCRIPT_VERSION" >> $LOG - notify-send --icon="$ICON" --app-name="$NOTIFY_NAME" "Script updated to version $REMOTE_SCRIPT_VERSION" + notify-send --icon="$ICON" "$NOTIFY_NAME" "Script updated to version $REMOTE_SCRIPT_VERSION" else echo "$DATE | Failed to update - Malformed version tags" >> $LOG echo "$DATE | Remote Version: $REMOTE_SCRIPT_VERSION" >> $LOG echo "$DATE | Local Version: $SCRIPT_VERSION" >> $LOG - notify-send --icon="$ICON" --app-name="$NOTIFY_NAME" "Script update failed! See log for details" + notify-send --icon="$ICON" "$NOTIFY_NAME" "Script update failed! See log for details" fi } @@ -229,12 +229,12 @@ update_helium() { ### CHECK FOR EMPTY VERSION TAGS if [[ -z "$APP_SOURCE_VERSION" ]] ; then echo "$DATE | Failed to update - Empty version tag --> $APP_SOURCE" >> $LOG - notify-send --icon="$ICON" --app-name="$NOTIFY_NAME" "Browser update failed! See log for details" + notify-send --icon="$ICON" "$NOTIFY_NAME" "Browser update failed! See log for details" exit elif [[ -z "$LOCAL_VERSION" ]] ; then echo "$DATE | Failed to update - Empty version tag --> LOCAL" >> $LOG - notify-send --icon="$ICON" --app-name="$NOTIFY_NAME" "Browser update failed! See log for details" + notify-send --icon="$ICON" "$NOTIFY_NAME" "Browser update failed! See log for details" exit fi @@ -244,7 +244,7 @@ update_helium() { APP_SOURCE_VERSION_NUM=$(echo $APP_SOURCE_VERSION | tr -d .) if [ "$APP_SOURCE_VERSION" == "$LOCAL_VERSION" ] ; then - notify-send --icon="$ICON" --app-name="$NOTIFY_NAME" "Browser is up-to-date" + notify-send --icon="$ICON" "$NOTIFY_NAME" "Browser is up-to-date" elif [ "$APP_SOURCE_VERSION_NUM" -gt "$LOCAL_VERSION_NUM" ] ; then mkdir -p $TMP @@ -254,11 +254,11 @@ update_helium() { 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 "$DATE | $APP_NAME updated to version ${APP_SOURCE_VERSION}" >> $LOG - notify-send --icon="$ICON" --app-name="$NOTIFY_NAME" "Browser updated to version $APP_SOURCE_VERSION" + notify-send --icon="$ICON" "$NOTIFY_NAME" "Browser updated to version $APP_SOURCE_VERSION" else echo "$DATE | Failed to update - Version tags malformed" >> $LOG - notify-send --icon="$ICON" --app-name="$NOTIFY_NAME" "Browser update failed! See log for details" + notify-send --icon="$ICON" "$NOTIFY_NAME" "Browser update failed! See log for details" exit fi @@ -277,7 +277,7 @@ show_log() { xdg-open $LOG else - notify-send --icon="$ICON" --app-name="$NOTIFY_NAME" "No log created yet" + notify-send --icon="$ICON" "$NOTIFY_NAME" "No log created yet" fi } @@ -314,6 +314,13 @@ exit_clean() { ## GET OPTIONS while getopts ":a,:s,:S,:L,: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 S)